我在使用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>
Run Code Online (Sandbox Code Playgroud)
和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();
}
}
Run Code Online (Sandbox Code Playgroud)
但我有错误:
org.apache.jasper.JasperException:/save.jsp(30,0)当默认命名空间不是特定的时,函数getValid必须与前缀一起使用
我该如何解决?
当未指定默认命名空间时,函数getValid必须与前缀一起使用
当您不使用/运行支持Servlet 3.0的容器时,例如Tomcat 7,Glassfish 3等,此错误消息是典型的.在Servlet 3.0之前,不支持在EL中调用任意方法.
因此,如果您无法升级到Servlet 3.0,那么您应该指定属性名称.
<c:if test="${user.valid == 0}">
Run Code Online (Sandbox Code Playgroud)
你还需要采取${view.printUserData(user)}不同的方法.我会为此使用EL功能.
<c:out value="${f:printUserData(view, user)}">
Run Code Online (Sandbox Code Playgroud)
同
public static String printUserData(View view, Validation validation) {
return view.printUserData(validation);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7259 次 |
| 最近记录: |