Я использую Spring, но этот вопрос относится ко всем проектам типа JSP-контроллера.Весной/JSP, где нужно форматировать?
Страница JSP ссылается на данные (используя теги), которые заполняются соответствующим контроллером. Мой вопрос: где подходящее место для форматирования, в JSP или контроллере?
До сих пор я готовил данные, форматируя его в своем контроллере.
public class ViewPersonController extends org.springframework.web.servlet.mvc.AbstractController
{
private static final Format MY_DATE_FORMAT = new SimpleDateFormat(...);
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
{
Person person = get person from backing service layer or database
Map properties = new HashMap();
// No formatting required, name is a String
properties.put("name", person.getName());
// getBirthDate() returns Date and is formatted by a Format
properties.put("birthDate", MY_DATE_FORMAT.format(person.getBirthDate()));
// latitude and longitude are separate fields in Person, but in the UI it's one field
properties.put("location", person.getLatitude() + ", " + person.getLongitude());
return new ModelAndView("viewPerson", "person", properties);
}
}
Файл JSP будет выглядеть примерно так:
Name = <c:out value="${person. name}" /><br>
Birth Date = <c:out value="${person. birthDate}" /><br>
Location = <c:out value="${person. location}" /><br>
Я знаю, что JSP имеет некоторые положения для форматирования,
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<fmt:formatDate type="date" value="${person. birthDate}" />
Но это работает только с в Java java.util.Format
. Что делать, если мне нужны более сложные или рассчитанные значения. В таком случае ввод кода в JSP был бы громоздким (и уродливым).
Мне любопытно, если это соответствует духу Spring/JSP/MVC. Другими словами, является ли контрольная часть представления? Где предпочтительное место для форматирования, связанного с просмотром? Должен ли мой контроллер просто возвращать объект (Person) вместо карты форматированных значений?
Но это будет нарушать сохранение отдельного вида модели. – 2008-12-12 17:45:47