JSP,JSTL。变量和方法的问题

时间:2011-07-07 09:17:24

标签: jsp jstl

使用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 个答案:

答案 0 :(得分:9)

  

当未指定默认命名空间时,函数getValid必须与前缀一起使用

当您不使用/运行支持Servlet 3.0的容器时,例如Tomcat 7,Glassfish 3等,此错误消息是典型的。在Servlet 3.0之前,不支持在EL中调用任意方法。

因此,如果您无法升级到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);
}