JSTL和EL表达式诡异的问题

tengfeng05 2012-12-08 02:46:08
以下代码昨天之前一直都正常,代码也未经任何修改,今天开始突然就一直报JSP编译错误,具体是因NumberFormatException导致的编译不过去,我实在懵了,报NumberFormat的地方明明是字符串,怎么它就非要给我转换成数字呢?百思不得其解,特来请假CSDN上的高人
代码如下:



<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<div class="topic">

<div class="floor">
<div class="title">
<h1>
${topic.title}
</h1>
</div>
<div class="floormsg title">
<span class="spt">楼主:<a class="author" href="">${topic.username}</a> </span>
<span class="spt">发表于${topic.pubtime}</span>
<span class="spt">点击:</span>
<span class="red">${viewcount}</span>
<span class="spt">回复:</span>
<span class="red">${replycount}</span>
<span class="spt">
<button id="onlyowner" class="btn">
只看楼主
</button> </span>
<span class="spt">
<button id="readsettingbtn" class="btn">
阅读设置
</button> </span>
</div>
<c:if test="${currentpage==1}">
<div class="contentdiv">
${topic["content"]}
</div>
</c:if>
</div>

<c:forEach items="${replyList}" var="reply" varStatus="replyStatus">
<div class="floor">
<div class="floormsg">
<span>作者:<a class="author" href="">${reply.username}</a> </span>
<span class="index"> ${replyStatus.index+startfloor}楼</span>
<span class="pubt">发表于${reply.pubtime}</span>
</div>
<div class="contentdiv">
${reply["content"]}
</div>
<div class="operate">
<a href="" onclick="">引用</a>
<a href="" onclick="">举报</a>
</div>
</div>
</c:forEach>
</div>



org.apache.jasper.JasperException: An exception occurred processing JSP page /bbs/topic/floor.jsp at line 40

37: <c:forEach items="${replyList}" var="reply" varStatus="replyStatus">
38: <div class="floor">
39: <div class="floormsg">
40: <span>浣滆�锛�a class="author" href="">${reply.username}</a> </span>
41: <span class="index"> ${replyStatus.index+startfloor}妤�/span>
42: <span class="pubt">鍙戣〃浜�{reply.pubtime}</span>
43: </div>



java.lang.NumberFormatException: For input string: "username"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:447)
java.lang.Integer.parseInt(Integer.java:497)
javax.el.ArrayELResolver.coerce(ArrayELResolver.java:161)
javax.el.ArrayELResolver.getValue(ArrayELResolver.java:45)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
org.apache.el.parser.AstValue.getValue(AstValue.java:123)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:935)
org.apache.jsp.bbs.topic.topicview_jsp._jspx_meth_c_005fforEach_005f1(topicview_jsp.java:829)
org.apache.jsp.bbs.topic.topicview_jsp._jspService(topicview_jsp.java:294)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

...全文
195 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29679113 2015-07-15
  • 打赏
  • 举报
回复
我也报这个数字转换异常了,请问楼主是怎么解决的
tengfeng05 2012-12-08
  • 打赏
  • 举报
回复
问题解决了!惭愧!是我改了一条hql语句,导致replyList里面放的不再是Reply对象,而是Object数组对象,所以应该是jsp编译器试图将username解析成一个数组下标时发生了错误,所以抛出了NumberFormatException。结贴给分
BUG胡汉三 2012-12-08
  • 打赏
  • 举报
回复
引用 4 楼 tengfeng05 的回复:
引用 3 楼 hzw2312 的回复:java.lang.Integer.parseInt 可否贴上你的实体、确实很诡异!!! username是字符串、这么会报这个异常呢! 不知道是不是实体那边做了什么操作? 实体没有任何问题的,之前一直都好使的,今天今天一下子就蹦出这个问题来,怎么也想不明白是什么原因。以下是我的实体类 Java code?123456789……
从新发布一次~~~然后在getUsername()这个方法里面设一个断点! 调试一下看看、它到底是不是走这个方法哦、明明没有调用parseInt嘛、肿么会这样呢!
jackson_fighting 2012-12-08
  • 打赏
  • 举报
回复
引用 7 楼 tengfeng05 的回复:
引用 6 楼 SDN_SUPERUSER 的回复:引用 5 楼 SDN_SUPERUSER 的回复: 引用 1 楼 baininghan 的回复:Java code?12java.lang.NumberFormatException: For input string: "username"java.lang.NumberFormatException.forInput……
话不要说的那么绝对。 楼主把这个replyList 重写reply的toString()方法 把他在页面显示出来,不用foreach
tengfeng05 2012-12-08
  • 打赏
  • 举报
回复
引用 6 楼 SDN_SUPERUSER 的回复:
引用 5 楼 SDN_SUPERUSER 的回复: 引用 1 楼 baininghan 的回复:Java code?12java.lang.NumberFormatException: For input string: "username"java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) ……
这个原因是绝对不会的,我的所有编码格式都设置正确,这里面乱码是因为编译JSP时发生了异常,还没有来得及进行转码处理。在正常的时候前台页面是不会出现乱码的
jackson_fighting 2012-12-08
  • 打赏
  • 举报
回复
引用 5 楼 SDN_SUPERUSER 的回复:
引用 1 楼 baininghan 的回复:Java code?12java.lang.NumberFormatException: For input string: "username"java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 看着是字节码转换的问题 ……
乱码导致format 失败
jackson_fighting 2012-12-08
  • 打赏
  • 举报
回复
引用 1 楼 baininghan 的回复:
Java code?12java.lang.NumberFormatException: For input string: "username"java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 看着是字节码转换的问题
应该是乱码到时 format 失败
tengfeng05 2012-12-08
  • 打赏
  • 举报
回复
引用 3 楼 hzw2312 的回复:
java.lang.Integer.parseInt 可否贴上你的实体、确实很诡异!!! username是字符串、这么会报这个异常呢! 不知道是不是实体那边做了什么操作?
实体没有任何问题的,之前一直都好使的,今天今天一下子就蹦出这个问题来,怎么也想不明白是什么原因。以下是我的实体类


public class Reply{
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
    private Integer rid;
	
	@ManyToOne
	@JoinColumn(name="tid",referencedColumnName="tid")
    private Topic topic ;
	
	@Column(name="iids",length=50)
	private String iids; 
	
	@Column(name="username")
    private String username;
	
	@Column(name="content",nullable=false,length=6000)
	private String content;
	
	@Column(name="pubtime")
	private Timestamp pubtime;

	public Integer getRid() {
		return rid;
	}

	public void setRid(Integer rid) {
		this.rid = rid;
	}



	public Topic getTopic() {
		return topic;
	}

	public void setTopic(Topic topic) {
		this.topic = topic;
	}

	public String getIids() {
		return iids;
	}

	public void setIids(String iids) {
		this.iids = iids;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public Timestamp getPubtime() {
		return pubtime;
	}

	public void setPubtime(Timestamp pubtime) {
		this.pubtime = pubtime;
	}

	
	

}
BUG胡汉三 2012-12-08
  • 打赏
  • 举报
回复
java.lang.Integer.parseInt 可否贴上你的实体、确实很诡异!!! username是字符串、这么会报这个异常呢! 不知道是不是实体那边做了什么操作?
tengfeng05 2012-12-08
  • 打赏
  • 举报
回复
引用 1 楼 baininghan 的回复:
Java code?12java.lang.NumberFormatException: For input string: "username"java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 看着是字节码转换的问题
高人,能否说明白一点?
老白分享 2012-12-08
  • 打赏
  • 举报
回复
java.lang.NumberFormatException: For input string: "username"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
看着是字节码转换的问题

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧