项目中使用char进行比较
<c:when test="${person.edited==true && person.status=='Z'}">暂存</c:when>
<c:when test="${person.edited==true && person.status=='P' }">待审核</c:when>
<c:when test="${person.edited==true && person.status=='R' }">退回修改</c:when>
<c:when test="${person.edited==true && person.status=='A' }">审核通过</c:when>
报一下错误
org.apache.jasper.JasperException: javax.el.ELException: Cannot convert Z of type class java.lang.String to class java.lang.Long
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:372)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)
at com.iris.egrant.web.struts2.interceptor.ExceptionLogInterceptor.intercept(ExceptionLogInterceptor.java:96)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:168)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
原因:数据库的字段是char类型,在jstl中会把 ‘A’ 这种自动转成字符串,然后字符跟字符串进行比较,导致报错
解决:
- 把javabean里面的char类型改成String
private Character status;
public Character getStatus() {
return status;
}
public void setStatus(Character status) {
this.status = status;
}
换成
private String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
- 把 ‘A’ 这种换成ASCII码值,例如把A换成65
<c:when test="${person.edited==false}">填写中</c:when>
<c:when test="${person.edited==true && person.status==90}">暂存</c:when>
<c:when test="${person.edited==true && person.status==80 }">待审核</c:when>
<c:when test="${person.edited==true && person.status==82 }">退回修改</c:when>
<c:when test="${person.edited==true && person.status==65 }">审核通过</c:when>