2012-04-24 21 views
1

定数JavaなどmodelAttribute名Iが一定春の形 - コードで自分自身を繰り返さないために

@Controller 
@RequestMapping("/") 
public class Controller { 
    public static final String MODEL_ATTRIBUTE = "myModel"; 

    public String renderPage(Model model) { 
     model.addAttribute(MODEL_ATTRIBUTE, ...); 
     return "index"; 
    } 
} 

JavaなどmodelAttribute名を使用しましたが今私は(私が知っているスクリプトレットそのスクリプトレットを使用してJSPにこの定数をインポートします悪いですが、私はより良い解決策に慣れていません)。

<%@page contentType="text/html" pageEncoding="UTF-8" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 

<%@page import="static com.example.Controller.*" %> 

<form:form action="/" modelAttribute="<%= MODEL_ATTRIBUTE %>"> 

    <form:label path="attr1">Attribute:</form:label> 
    <form:input path="attr1" /> 

    <c:forEach items="${???.attr2}" var="item"> 
     ...  
    </c:forEach> 
    <input type="submit" /> 
</form:form> 

forEachループのmodelAttributeオブジェクトはどのように参照する必要がありますか? SpringフォームでDRYの方が良い解決法はありますか?

答えて

0

は、答えを

<c:forEach items="${myModel.attributeNameFromYourModel}" var="item"> 
     ...  
</c:forEach> 
+0

おかげでモデル名を使用してください。私がこの質問をしたのは、モデル名を直接使用したくないからです。私はそれを単一の場所に保管したいと思います。アプリケーション全体で使用されるJava定数。あなたのアプローチを使用してモデル名を変更したい場合は、少なくとも2つの異なる場所で変更する必要があります。これは将来、多くのダム・エラーをもたらす可能性があります。 – kurochenko

+2

@kurochenko私はあなたの感情を理解しています。しかし、悪意あるスクリプトレットを使用しない限り、JSPはそのようには機能しません。 –

+0

個人的には、スクリプトレットを使用するファンではありません。しかし、私がここで提案できるのは、jspにモデル属性名を割り当て、割り当てられた値を他の場所で参照することです。例:<%= MODEL_ATTRIBUTE%>残念ながら、それはもっと汚くなります。 –

関連する問題