2012-04-24 9 views
2

私は時間と分を2つの別々のドロップダウン選択ボックスで選択するオプションがあるタイムエントリシステムを作成しています。だから時ボックスの数字は1-12で、分ボックスは00-59です。数字の範囲のSpring JSP Selectリスト

これはSpring 2.5 Java EEプロジェクトの一部です。

は、私が選択し、ドロップダウンリストの一部としてオプションの値を作成するために、例えば、私のJSPでこれを持っている:

<% for(int i=1; i<=12; i++) { %> 
<option value="<%=i %>" <%= Integer.parseInt(time1fromHr)==i?selected:"" %> /> 
<% } %> 

ザ・ループのためにすべての時間を生成し、デフォルトとして現在選択されている時間をマーク。まあ、私にはかなり醜いです。なぜなら、ここにはかなりのJavaコードが含まれていて、JSPタグやSpringライブラリを使ってこの問題に近づくより洗練されたソリューションがあるのだろうかと思っていました。 SpringでModelAndViewオブジェクトを介して現在設定されているパラメータを渡しています。

+0

のために、それはおそらくあなたがループをアンロールし、ちょうどハードコーディングされた時間プラスJSP – ControlAltDel

+0

Disagree-で時間チェックインと12文を持っていた場合、私はあなたが持っていることを覚えているわけきれいになりますすでに選択されているオプションを選択できるようにするために、1分ごとに「1」であることを確認する必要があります – IcedDante

答えて

3

モデルでは、整数のリストを時間単位で渡すことも、数分間分単位でリストを渡すこともできます。次に、selectタグを使用します。フォームのコマンド・オブジェクトは、「時間」の値に設定され、選択した値を持っており、モデルが値を「時間」で1-12含まれている場合

<form:select path="hour"> 
    <form:options items="${hours} /> 
</form:select> 

、それは選択をレンダリングしての世話をする必要があります適切なオプションを選択してマークします。その後、同じことを数分間行います。

スプリングフォームのtaglib方向に移動したくない場合は、モデルに時間を入れてJSTLを使用できます。私はCを行うには良い方法があります知っている

<c:forEach var="hour" items="${hours}"> 
    <c:if test="${hour} == ${selectedHour}"> 
    <option value="${hour}" selected="selected">${hour}</option> 
    </c:if> 
    <c:if test="${hour} != ${selectedHour}"> 
    <option value="${hour}" >${hour}</option> 
    </c:if> 
</c:forEach> 

:一部は、多分Cを使用している場合:好きなものは選択していますが、要点を得ます。選択した値はselectedHourに、選択肢は時間単位でモデルにあります。

+0

私はこのソリューションが好きです。なぜなら、私はまだ強い春の人ではないからです。ありがとう! – IcedDante

+0

ここでは/を使うほうがいいと思うが、それでも – IcedDante

+0

とか、私は答えの一番下に書いた。私は最近JSPを積極的に使用していませんし、短期間であったので、そこにポイントを取得するためにc:を入れるだけです。 – digitaljoel

1

はい、春のMVCのこの部分がされています。その後、

@RequestMapping(value="/index.html",method=RequestMethod.GET) 
    public String form(ModelMap map) { 
     Map<String,String> country = new LinkedHashMap<String,String>(); 
    country.put("US", "United Stated"); 
    country.put("CHINA", "China"); 
    country.put("SG", "Singapore"); 
    country.put("MY", "Malaysia"); 
    map.addAttribute("countryList", country); 
     return "index"; 
} 

とは使用:

<form:select path="country" items="${countryList}" /> 

ページに春のタイプライブラリを追加することを忘れないでください:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
+0

この例では、選択したオプションはどのようにしてマークされますか? – IcedDante

0

使用JSTL比較

<c:forEach var="hour" items="${hours}"> 
    <c:if test="${hour == selectedHour}"> 
    <option value="${hour}" selected="selected">${hour}</option> 
    </c:if> 
    <c:if test="${hour != selectedHour}"> 
    <option value="${hour}" >${hour}</option> 
    </c:if> 
</c:forEach> 

OR 

<c:forEach var="hour" items="${hours}"> 
    <c:if test="${hour eq selectedHour}"> 
    <option value="${hour}" selected="selected">${hour}</option> 
    </c:if> 
    <c:if test="${hour ne selectedHour}"> 
    <option value="${hour}" >${hour}</option> 
    </c:if> 
</c:forEach> 
関連する問題