2012-03-20 99 views
0

此代码正常工作(减去两个日期之间的天数),但它在Eclipse中显示为错误,我试图弄清楚如何清理它以便它不会给出错误。我没有写代码,顺便说一句....“start”无法解析为变量

<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(开始)和错误。(完),它“不能被解析为一个变量”。我在这里错过了什么?

+0

我不是这也太,但你似乎有一个称为start的变量和称为start的bean。我不确定你的豆是什么。同样适用于'结束'。我的第一个刺将是将bean重命名为startx和endx以查看会发生什么。 – 2012-03-20 12:21:15

+0

使用这些bean,我希望看到类似start.getStartingValue()的代码。 – 2012-03-20 12:22:27

回答

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方法可以通过看这个答案可以实现https://stackoverflow.com/a/3300078/9422

1

使用下面的代码

<% pageContext.getAttribute("start"); %> 

在小脚本

当你使用JSTL它是在pageContextScope默认情况下,所以你可以从pageContext的

+0

'sdf.parse(start)'变成'sdf.parse(“start”)'? – harryBundles 2012-03-20 13:02:21

+0

** no **,''start“'是'String'的一个实例,其中'start'是一个在scriptlet中声明的变量 – 2012-03-20 13:53:12