JSP, JSTL.Проблема с переменными и методами - PullRequest
5 голосов
/ 07 июля 2011

У меня есть некоторые проблемы с использованием JSTL.У меня есть это:

<jsp:useBean id="view" class="user.View"></jsp:useBean>
<jsp:useBean id="user" class="user.Validation" scope="session"></jsp:useBean>

<c:if test="${user.getValid() == 0}">
<c:out value="${view.printUserData(user)}"></c:out>
</c:if> 

и View класс выглядит:

package user;

import java.lang.StringBuilder;

public class View {
    public String printUserData(Validation val) {
        String name = val.getImie();

        mainText.append(name);

        return mainText.toString();
    }

}

, но у меня есть ошибка:

org.apache.jasper.JasperException: /save.jsp (30,0) Функция getValid должна использоваться с префиксом, если пространство имен по умолчанию не указано

Как я могу это исправить?

1 Ответ

9 голосов
/ 08 июля 2011

Функция getValid должна использоваться с префиксом, если пространство имен по умолчанию не указано

Это сообщение об ошибке типично, если вы не используете / не запускаетеКонтейнер с поддержкой Servlet 3.0, например, Tomcat 7, Glassfish 3 и т. Д. Вызов произвольных методов в EL не поддерживается до Servlet 3.0.

Итак, если вы не можете выполнить обновление до Servlet 3.0, вам следует указать вместо этого имя свойства.

<c:if test="${user.valid == 0}">

Вам также нужно будет подойти к ${view.printUserData(user)} по-другому.Я бы использовал для этого функцию EL.

<c:out value="${f:printUserData(view, user)}">

с

public static String printUserData(View view, Validation validation) {
    return view.printUserData(validation);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...