чтобы не повторяться в коде, я использовал имя modelAttribute
в качестве константы java
@Controller
@RequestMapping("/")
public class Controller {
public static final String MODEL_ATTRIBUTE = "myModel";
public String renderPage(Model model) {
model.addAttribute(MODEL_ATTRIBUTE, ...);
return "index";
}
}
Теперь я импортирую эту константу в 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>
Как я должен ссылаться на объект modelAttribute
в цикле forEach? Есть ли лучшее решение для DRY в формах Spring?