Выражение El не работает в весеннем каркасе [дубликат]

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.

Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

if( $result === FALSE ) {
   trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR);
} else {
   while( $row = mysql_fetch_array($result) ) {
      echo $row['username'];
   }
}

http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.

17
задан ROMANIA_engineer 26 January 2016 в 13:12
поделиться

4 ответа

javax.el.PropertyNotFoundException: свойство 'foo' не найдено в типе com.example.Bean

Это буквально означает, что упомянутый класс com.example.Bean не имеет общедоступный (нестатический!) метод getter для указанного свойства foo. Обратите внимание, что само поле здесь не имеет значения!

Имя открытого метода getter должно начинаться с get, за которым следует имя свойства, которое имеет заглавные буквы только в первой букве имени свойства, как в Foo .

public Foo getFoo() {
    return foo;
}

Таким образом, вам необходимо убедиться, что существует метод получения, точно соответствующий имени свойства, и что метод public (не static) и что метод не принимать любые аргументы и возвращать не void. Если у вас есть один, и он по-прежнему не работает, то есть вероятность, что вы были заняты редактированием кода вперед и назад без прочной очистки сборки, восстановления кода и повторного развертывания / перезапуска приложения. Вы должны убедиться, что вы это сделали.

Для свойств boolean (не Boolean!) Имя метода getter должно начинаться с is вместо get.

public boolean isFoo() {
    return foo;
}

Независимо от типа, наличие самого поля foo, таким образом, не имеет значения. Он может иметь другое имя или быть полностью отсутствующим или даже быть static. Все ниже должно быть доступно ${bean.foo}.

public Foo getFoo() {
    return bar;
}

public Foo getFoo() {
    return new Foo("foo");
}

public Foo getFoo() {
    return FOO_CONSTANT;
}

Понимаете, это не то, что подсчет, но сам метод геттера. Обратите внимание, что само имя свойства не должно быть капитализировано в EL. Другими словами, ${bean.Foo} никогда не будет работать, это должно быть ${bean.foo}.

См. Также:

54
ответ дан Community 27 August 2018 в 09:47
поделиться

Я считаю, что идентификаторы доступа не соответствуют соглашениям об именах бинов, и поэтому исключение выбрано. Они должны быть следующими:

public Integer getId() { return id; }    
public void setId(Integer i){ id= i; }
5
ответ дан bummi 27 August 2018 в 09:47
поделиться

Я столкнулся с аналогичным типом проблемы: Code Snippet:

<c:forEach items="${orderList}" var="xx"> ${xx.id} <br>
</c:forEach>

После списка заказов было следующее: «$ {orderList}», из-за чего переменная xx скрывалась в String и не могла вызвать xx.id.

Поэтому убедитесь, что в пространстве. Иногда они играют решающую роль. : Р

-2
ответ дан Rajat 27 August 2018 в 09:47
поделиться

EL интерпретирует ${class.name} как описано - имя становится getName () в предположении, что вы используете явные или неявные методы генерации getter / seters

. Вы можете переопределить это поведение, явно указав имя как функция: ${class.name()} Это вызывает имя функции () напрямую без изменений.

0
ответ дан sdw 27 August 2018 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: