2013-02-27 5 views
5

JSPファイルからスイッチを削除する正しい方法は何ですか?私は、複数のタイプのオブジェクトを返すことができるファクトリを持っています。それらのそれぞれが独自の表現ロジックを持っているので、私はこのようなものが必要です。jspファイルから大きなスイッチを削除する正しい方法は何ですか

//From controller 
@RequestMapping(value = "/source", method = RequestMethod.POST) 
public ModelAndView doMainJob(@RequestParam("text") String text) { 
    ResultState state = new ResultStateFactory().fromString(text); 
    ModelAndView model = new ModelAndView("result/view"); 
    model.addObject("state", state); 
    model.addObject("stateType", state.getClass()); 
    return model; 
} 

//from jsp/result/view.jsp 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="main" tagdir="/WEB-INF/tags" %> 
<%@taglib prefix="r" tagdir="/WEB-INF/tags/result" %> 
<main:basic_layout> 
    <jsp:body> 
    <c:choose> 
     <c:when test="${stateType == StateA}"><r:stateA param=${state} /></c:when> 
     <c:when test="${stateType == StateB}"><r:stateB param=${state} /></c:when> 
     <c:when test="${stateType == StateC}"><r:stateC param=${state} /></c:when> 
     . 
     . 
     . 
     <c:when test="${stateType == StateX}"><r:stateX param=${state} /></c:when> 
     <c:when test="${stateType == StateY}"><r:stateY param=${state} /></c:when> 
    </c:choose> 
    </jsp:body> 
</main:basic_layout> 

を私の工場は、注釈に基づいているので、私は簡単に正しいアノテーションで状態を追加することができます。私はタグビューに似た何かをしたい。正しい注釈と1つのタグファイルで1つの状態を2つだけ追加すると理想的です。

+5

は、なぜあなたは、単一の'作成しないでくださいフードの下で適切な実装にさらに委任しますか? – BalusC

+0

'ModelAndView model = new ModelAndView(" result/view/"+ state.getClass()。getSimpleName());'も動作しますか? – Esailija

+0

'ModelAndView model = new ModelAndView(" result/view/"+ state.getClass()。getSimpleName());'は動作しますが、結果のリストを表示する必要がある場合はどうしますか? – user2050786

答えて

1

タグ結果にsateTypeを置く:<:状態タイプ= "$ {stateType}" のparam = "$ {状態}" R> `これ

<r:state param=${state} type="${stateType}" /> 
関連する問題