Я не совсем понимаю ваш вопрос, пожалуйста, опишите его подробнее, но я предлагаю вам добавить <form action="post.php?id=x">
и </form>
Таким образом, ваша HTML-разметка (может быть .php) должно выглядеть так:
<form method="POST" acion="post.php?id=x"/> <!-- here you can echo ID from session -->
<input type="text" id="name" class="search" autocomplete="off" data-provide="typeahead" placeholder="search" />
<input type="submit" value="Search!" />
</form>
Кстати, если вы не хотите заменять post.php?id=x
реальным идентификатором, например, post.php?id=84
, вы можете заменить x
в вашем <form>
на [117 ]
Конечно, вы должны добавить PHP, определяющий $ id, но, как я уже сказал, я не понимаю весь ваш вопрос, опишите его подробнее, чтобы мы могли вам помочь.
Надеюсь, это поможет: :)
Спасибо,
Оливер
Это является немного поперечным от Вашего исходного вопроса, но всегда существует
if(s1.length() == 0)
, я полагаю, что это эквивалентно isEmpty () метод от 1,6.
Это собирается зависеть от того, если строка является литералом или нет. При создании строки с
new String("")
Затем, она никогда не будет соответствовать "", равняется оператору, как показано ниже:
String one = "";
String two = new String("");
System.out.println("one == \"\": " + (one == ""));
System.out.println("one.equals(\"\"): " + one.equals(""));
System.out.println("two == \"\": " + (two == ""));
System.out.println("two.equals(\"\"): " + two.equals(""));
-
one == "": true
one.equals(""): true
two == "": false
two.equals(""): true
В основном, Вы хотите всегда использовать, равняется ()
"".equals(s)
, Кажется, наилучший вариант, но существует также Stringutils.isEmpty(s)
содержавшееся в свободном городском населении Apache библиотека Ленга
s1 == ""
не надежно, поскольку это тестирует ссылочное равенство не объектное равенство (и Строка не является строго канонической).
s1.equals("")
лучше, но может пострадать от исключений нулевого указателя. Еще лучше:
"".equals(s1)
Никакие исключения нулевого указателя.
РЕДАКТИРОВАНИЕ: хорошо, точку спросили приблизительно [1 110] каноническая форма . Эта статья определяет его как:
предположим у нас есть некоторый набор S объектов с отношением эквивалентности. Каноническая форма дана путем обозначения некоторых объектов S быть "в канонической форме", такова, что каждый объект на рассмотрении эквивалентен точно одному объекту в канонической форме.
, Чтобы дать Вам практический пример: возьмите набор рациональных чисел (или "части", их обычно называют). Рациональное число состоит из числителя и denomoinator (делитель), оба из которых являются целыми числами. Эти рациональные числа эквивалентны:
3/2, 6/4, 24/16
Рациональные nubmers обычно пишутся таким образом, что GCD (наибольший общий делитель) равняется 1. Таким образом, все они будут упрощены до 3/2. 3/2 может быть просмотрен как каноническая форма из этого набора рациональных чисел.
Так что означает в программировании, когда термин "каноническая форма" используется? Это может означать несколько вещей. Посещайте, например, этот мнимый урок:
public class MyInt {
private final int number;
public MyInt(int number) { this.number = number; }
public int hashCode() { return number; }
}
хэш-код класса MyInt является канонической формой того класса, потому что для набора всех экземпляров MyInt, можно взять любые два элемента m1 и m2, и они повинуются следующему отношению:
m1.equals(m2) == (m1.hashCode() == m2.hashCode())
, Что отношение является сущностью канонической формы. Более распространенным способом это неожиданно возникает, когда Вы используете методы фабрики для классов, таких как:
public class MyClass {
private MyClass() { }
public MyClass getInstance(...) { ... }
}
Экземпляры нельзя непосредственно инстанцировать, потому что конструктор является частным. Это - просто метод фабрики. Какой метод фабрики позволяет, Вы, чтобы сделать являетесь вещами как:
В основном создание объекта кратких обзоров метода фабрики и лично я думаю, что это была бы интересная функция языка, чтобы вынудить всех конструкторов быть частными для осуществления использования этого шаблона, но я отступаю.
то, Что можно сделать с этим методом фабрики, является кэшем экземпляры, которые Вы создаете таким образом, что для любых двух экземпляров s1 и s2 они повинуются следующему тесту:
(s1 == s2) == s1.equals(s2)
Поэтому, когда я говорю, что Строка не является строго канонической, это означает что:
String s1 = "blah";
String s2 = "blah";
System.out.println(s1 == s2); // true
, Но поскольку другие указали, что можно изменить это при помощи:
String s3 = new String("blah");
и возможно:
String s4 = String.intern("blah");
, Таким образом, Вы не можете полагаться на ссылочное равенство полностью, таким образом, Вы не должны полагаться на него вообще.
Как протест к вышеупомянутому шаблону, я должен указать, что управление созданием объекта с частными конструкторами и методами фабрики не гарантирует ссылочного равенства объекта средств равенства из-за сериализации. Сериализация обходит механизм создания обычного объекта. Josh Bloch затрагивает эту тему в Эффективном Java (первоначально в первом выпуске, когда он говорил о безопасном с точки зрения типов перечислимом шаблоне, который позже стал функцией языка в Java 5), и можно обойти его путем перегрузки (частного) readResolve () метод. Но это хитро. Загрузчики класса будут влиять на проблему также.
Так или иначе, это - каноническая форма.
Строка, строка, строка, является ли это пустой строкой или нет. Используйте equals()
.
Учитывая две строки:
String s1 = "abc";
String s2 = "abc";
- или -
String s1 = new String("abc");
String s2 = new String("abc");
== оператор, выполненный на двух Объектах, проверяет на объектные идентификационные данные (это возвращает true, если эти два оператора возвращаются к тому же экземпляру объекта.) Фактическое поведение == относилось к java.lang. Строки, не всегда кажется, последовательны из-за Строкового интернирования.
В Java, Строки , интернировал (по крайней мере частично на усмотрение JVM.) В любом моменте времени s1 и s2 может или не мог быть интернирован, чтобы быть той же ссылкой на объект (предположение, что у них есть то же значение.) Таким образом s1 == s2
может или может не возвратить true, базирующийся только на том, были ли s1 и s2 оба интернированы.
Создание s1 и s2, равный пустым строкам, не имеет никакого эффекта на это - они все еще могут или не могли быть интернированы.
Короче говоря, == может или может не возвратить true, если s1 и s2 имеют то же содержание. s1.equals (s2), как гарантируют, возвратит true, если s1 и s2 будут иметь то же содержание.