2016-10-27 9 views
-1

私はいくつかのオブジェクトインスタンスをフォームにマッピングしています。 私は、JSPページでc:foreachループを使用するつもりです。HashMapオブジェクトの値がc:によって読み取られない場合

私は春のMVCを使用し、モデルはJSPに正しく渡されますが、c:foreachループによって読み取られるHashMapがある属性は例外です。

ルック:

JSPの(分析/ analysisConfig):

<form:form modelAttribute="analysisForm" action="analize" method="post" 
     id="analysisForm"> 

     <label for="sampling"><spring:message code='analysis.sampling' /></label> 
     <input type="text" id="sampling" name="sampling" /> 
     <br /> 
     <c:forEach items="${analysisTypes}" var="type"> 
      <label for="${type.key.name}"><spring:message 
        code='${type.key.message}' /></label> 
      <input type="checkbox" id="${type.key.name}" name="${type.key.name}" 
       value="${type.value}" /> 
     </c:forEach> 
</form> 

コード分析コントローラクラスから:

private static Map<IAnalysisType, Boolean> analysisTypes = new HashMap<IAnalysisType, Boolean>(); 

    //Configure here all analysis Types to be shown 
    static{ 
     analysisTypes.put(new AnalysisRMS(), false); 
    } 

    @RequestMapping(value="configuration", method= RequestMethod.GET) 
    public String config(@ModelAttribute("analysisForm") AnalysisForm form, @ModelAttribute("fileName") String fileName, Model model){ 
     if(fileName!= null && fileName!=""){ 
      form.setAnalysisTypes(AnalysisController.analysisTypes); 
      form.setFileName(fileName); 
      model.addAttribute("analysisForm", form); 
      return "analysis/analysisConfig"; 
     } else { 
      return "index"; 
     } 

インタフェース多型のために使用されている:

public interface IAnalysisType { 

    public String getName(); 
    public String getMessage(); 
    public AnalysisResult execute(String samples); 

} 

私はここで何が欠けていますか?

答えて

-1

<c:forEach>を使用してマップを反復処理すると、反復の各アイテムはMap.Entryのインスタンスになります。つまり、var="type"の各項目はMap.Entryのインスタンスを返します。

だからあなたの例与えられた:

<c:forEach var="type" items="${analysisTypes}"> 
    Key is ${type.key} 
    Value is ${type.value} 
</c:forEach> 
+0

ええ、私はそれを知っていると私はコードでこれを使用しています。私はコードを間違って書いたのですか? $ {type.key.name}のように、私はkeyから変数を作り、そこから名前を取得すべきですか? –

+0

Map.Entryクラスが何であるかのアイデアを得ることをお勧めします。 –

+0

したがって、繰り返しアイテムが失われた後にhashMapから何も作成できないのですか? –

関連する問題