Jaki jest właściwy sposób usunięcia przełącznika z mojego pliku JSP? Mam fabrykę, która może zwrócić wiele typów obiektów. Każdy z nich ma swoją własną logikę reprezentacji, więc muszę coś takiego:Jaki jest właściwy sposób usunięcia dużego przełącznika z mojego pliku 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>
Mój zakład jest w oparciu o adnotacje, dzięki czemu można łatwo dodać stan z odpowiednim dopiskiem. Chcę zrobić coś podobnego do widoków tagów. Byłoby idealnie, gdybym dodał tylko 2 pliki: 1 stan z poprawną adnotacją i 1 plik znacznika.
Dlaczego nie można utworzyć pojedynczy '' które delegaci pod maskami dalej do właściwej implementacji? –
BalusC
Czy nie "Model ModelAndView = nowy ModelAndView (" wynik/widok/"+ state.getClass(). GetSimpleName());' działa również? – Esailija
'Model ModelAndView = nowy ModelAndView (" wynik/widok/"+ stan.getClass(). GetSimpleName());' będzie działać, ale co jeśli muszę wyświetlić listę wyników – user2050786