jstl中使用Character类型比较

博客内容讲述了在项目中使用JSTL进行条件判断时,由于数据库字段为char类型,与字符串进行比较导致的`javax.el.ELException`。错误原因是JSTL在处理时将字符自动转换为字符串,不匹配Long类型。解决方案是将Java Bean中的char类型改为String,并使用ASCII码值进行比较。示例代码展示了修改后的条件判断。
摘要由CSDN通过智能技术生成

项目中使用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’ 这种自动转成字符串,然后字符跟字符串进行比较,导致报错
解决:

  1. 把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;
	}
  1. 把 ‘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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值