2

ユーザーが2つの別々のドロップダウン選択ボックスを介して時間と分を選択するオプションを持つ時間入力システムを作成しています。したがって、時間ボックスには 1 ~ 12 の数字があり、分のボックスには00 ~ 59があります。

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

たとえば、選択ドロップダウンリストの一部としてオプション値を作成するために、JSPにこれがあります。

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

for ループはすべての時間を生成し、現在選択されている時間をデフォルトとしてマークします。主にここにかなりの量の Java コードが含まれており、JSP タグまたは Spring ライブラリを使用してこの問題にアプローチするためのより洗練されたソリューションがあるかどうか疑問に思っていたためです。Spring の ModelAndView オブジェクトを介して、現在設定されているパラメーターを渡しています。

4

3 に答える 3

3

モデルでは、整数のリストを数時間、別のリストを数分渡すことができます。次に、form:select タグを使用できます。

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

フォームのコマンド オブジェクトの "hour" 値に選択された値が設定されていて、モデルの "hours" 値に 1 ~ 12 が含まれている場合、選択をレンダリングし、選択された適切なオプションをマークする必要があります。次に、同じことを数分間行います。

スプリング フォーム taglib の方向に進みたくない場合は、モデルに時間を再度配置して 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>

おそらく ac:choose を使用して c:if 部分を実行するより良い方法があることは知っていますが、要点はわかります。選択した値が selectedHour にあり、モデルの時間数が選択されています。

于 2012-04-24T22:38:42.937 に答える
1

はい、Spring 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}" />

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

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
于 2012-04-24T22:34:31.343 に答える
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>
于 2013-07-18T08:00:52.697 に答える