2016-08-06 9 views
0

JSPでHTMLタグ属性を生成しようとしています。以下のクラスはHTML入力要素を表し、parametersフィールドはタグ属性を表します。JSPでHTMLタグ属性を動的に生成するにはどうすればよいですか?

public class Input { 

    private Map<String, String> parameters; 

    public Input() { 
     parameters = new HashMap<>(); 
    } 

    // getters and setters 
} 

私のSpring MVCコントローラでは、入力を格納してそれを私のモデルに渡すリストを作成しました。

@RequestMapping(value = "/add", method = RequestMethod.GET) 
public String add(Model model) { 
    List<Input> inputs = new ArrayList<>(); 
    // Creating objects and adding them to the list. 
    model.addAttribute("inputs", inputs); 
    return "add"; 
} 

すべてのオブジェクトが正しく作成されていることを確認しました。私は、JSPただし、入力属性がレンダリングされない

<c:forEach var="input" items="${inputs}"> 
    <div class="form-group"> 
     <label for="${input.parameters['id']}">${input.parameters['title']</label> 
     <input 
      <c:forEach var="param" items="${input.parameters}"> 
       <c:out value="${param.key}" />=<c:out value="${param.value}" /> 
      </c:forEach> 
     /> 
     <form:errors path="${input.parameters['name']}" />      
    </div> 
</c:forEach> 

に正しい方法でそれらをプリントアウトして問題を抱えている:

<input =="="></input> 

それは私が期待するものではありません。私の構文が間違っていますか?

答えて

0

不適切なアーキテクチャ設計を無視して、ロジックは正常です。のみ、${param}は、予約済みであり、HTTP要求パラメータマップを表す変数です。例えば。 ${param.foo}は、http://example.com/context/page?foo=barの値barを出力します。 our EL wiki pageも参照してください。

var="param"の名前を変更して再試行してください。 "parameters"と "param"の代わりに "attributes"と "attribute"を使用すると、より意味を持ち、コードを読みやすくなります。

<c:forEach var="attribute" items="${input.attributes}"> 
    <c:out value="${attribute.key}" />=<c:out value="${attribute.value}" /> 
</c:forEach> 
関連する問題