2016-03-31 17 views
1

検索パラメータを入力して結果を表示するjspページにSpringの "select"フォームタグを設定しました。 Springフォームのselect tageでは、 "multiple = true"オプションのために複数の項目を選択できます。複数の項目が選択されたことを強調表示するために結果表示を取得する際に問題が発生しています。Springフォームのselectタグで複数の項目が強調表示されない

ユーザーが1つのアイテムを選択した場合、フォームの再表示で強調表示されます(入力された検索パラメータがページの上半分に表示され、検索結果が下半分に表示されます)。

単一項目選択:

Single Item Selected

単品対応ディスプレイ上で選択としてまだ示さ:

Single item still shown as selected on response display

複数の項目が選択されている場合は、複数の選択ではありません結果表示にはすべてハイライト表示されます。

複数の項目selecテッド:結果の表示には示されていない

Multiple Items selected:

複数の項目:

アクションコマンド:

<form:form action="/${localePath}/search/ssSearch.do" method="post" modelAttribute="searchCommand" onsubmit="return trackSearch();"> 

選択コード

Multiple items not shown in results display

ここでは、関連するJSPコードです:

<tr valign="top"><td>Test Items</td><td> 
<form:select path="testItems" multiple="true" size="4"> 
     <form:option value="">All Items</form:option> 
     <form:options items="${testItems}" /> 
</form:select> 

Javaコード:ここ

がSearchCommandオブジェクトに "testItems" コードである:

private String testItems; 

    public String getTestItems() { 
     return testItems; 
    } 

    public void setTestItems(String testItems) { 
     this.testItems = testItems; 
    } 

ここ制御要求コードです:

@RequestMapping(value = "/*/search/ssSearch.do", method=RequestMethod.POST) 
public String searchResults(HttpServletRequest request, 

@ModelAttribute("searchCommand") SearchCommand command, ModelMap map) 
      throws Exception 
    { 
     return searchResultsDo(command, map, request); 
    } 

ここで使用されるコードですtestItemを設定する:

Map<String, String> testItemsMap = new TreeMap<String, String>(); 
    testItemsMap.put("item1 name", "item 1 value"); 
    testItemsMap.put("item2 name", "item 2 value"); 
    testItemsMap.put("item3 name", "item 3 value"); 
    testItemsMap.put("item4 name", "item 4 value"); 
    testItemsMap.put("item5 name", "item 5 value"); 
    testItemsMap.put("item6 name", "item 6 value"); 
    testItemsMap.put("item7 name", "item 7 value"); 
    testItemsMap.put("item8 name", "item 8 value"); 

    map.addAttribute("testItems", testItemsMap); 

回答ページで複数の選択項目をハイライト表示させるにはどうすればよいですか?

答えて

0

答えは、コード内の選択された項目のマップを収集し、その後、次のようにJSPでそれを参照することであった。

   <form:select path="testItems2" multiple="true" size="4"> 
        <form:option value="">All Items</form:option>    
         <c:forEach items="${testItems2}" var="testItem2"> 
         <c:choose> 
         <c:when test="${not empty items2SelectedMap[testItem2.key]}"> 
          <form:option value="${testItem2.key}" selected="true">${testItem2.value}</form:option> 
          </c:when> 
          <c:otherwise> 
          <form:option value="${testItem2.key}" >${testItem2.value}</form:option> 
         </c:otherwise>        
         </c:choose> 
        </c:forEach>        
       </form:select> 

Javaコード:

 Map<String, String> testItemsMap2 = new TreeMap<String, String>(); 

     List<String> items2SelectedList = null; 
     if(StringUtils.isNotBlank(command.getTestItems2())){ 
      String[] items2Selected = command.getTestItems2().split(","); 
      items2SelectedList = Arrays.asList(items2Selected); 
     } 


     Map<String, String> items2SelectedMap = new HashMap<String, String>(); 
     if (items2SelectedList != null) { 
      for (String item2 : items2SelectedList) { 
       items2SelectedMap.put(item2, item2); 
      } 
     } 
     map.addAttribute("items2SelectedMap", items2SelectedMap); 
関連する問題