2012-03-20 105 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