此代码可以正常工作(减去两个日期之间的天数),但它在Eclipse中显示为错误,我正在尝试弄清楚如何清理它以便它不会出错。我没有写代码,顺便说一句......
<c:set var="start" value="${move.moveStart}"/>
<jsp:useBean id="start" type="java.lang.String"/>
<c:set var="end" value="${move.moveEnd}"/>
<jsp:useBean id="end" type="java.lang.String"/>
<%
int days = 0;
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dstart = sdf.parse(start);
Date dend = sdf.parse(end);
long milsecs = dend.getTime() = dstart.getTime();
days = (int)(milsec/(1000*60*60*24));
}catch(ParseException pe){
;
}
%>
我在sdf.parse(start)和。(end)上得到的错误是“无法解析为变量”。我在这里缺少什么?
答案 0 :(得分:1)
使用以下代码
<% pageContext.getAttribute("start"); %>
在scriptlet中
当你使用jstl设置变量时,它默认位于pageContextScope中,因此你可以从pageContext中获取它
答案 1 :(得分:1)
由于您的此对象名为move
,并且您的计算似乎都不依赖于请求,为什么不在此对象上添加方法getDuration
,这基本上是
@Transient
public int getDuration() {
int days = 0;
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dstart = sdf.parse(start);
Date dend = sdf.parse(end);
long milsecs = dend.getTime() = dstart.getTime();
days = (int)(milsec/(MILLIS_IN_A DAY));
}catch(ParseException pe){
;
}
return days;
}
这样你就可以在你的jsp中说
<c:out value = "${move.duration}"/>
来实现getDuration方法