使用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必须与前缀一起使用
我该如何解决?
答案 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);
}