2012-03-20 12 views
0

このコードは、(2つの日付の間の日数を引いて)動作する必要がありますが、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

は、私があまりにもアップし、この上ないんだけど、あなたが持っているように見える

<c:out value = "${move.duration}"/> 

getDuration方法は、この答えを見ることで実現することもできると言うことができるようにstartという名前の変数とstartというBeanがあります。あなたの豆が何であるか分かりません。同じことが '終わり'に適用されます。私の最初の刺し傷は何が起こるか見るために豆をstartxとendxに改名することです。 –

+0

これらのBeanを使用すると、start.getStartingValue()がコード内にあることが予想されます。 –

答えて

1

からそれをつかむことができますので、それはデフォルトでpageContextScopeであるJSTLを使用して変数を設定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でhttps://stackoverflow.com/a/3300078/9422

1

次のコードを使用スクリプトレット

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

あなたはこのオブジェクトが呼び出されていますので、あなたはpageContextの

+0

は 'sdf.parse(start)'が 'sdf.parse(" start ")'になるでしょうか? – harryBundles

+0

** no **、 '' start "'は 'string'のインスタンスで、' start'はスクリプトレットで宣言された変数です –

関連する問題