我正在使用Spring,但這個問題適用於所有JSP控制器類型設計。在Spring/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)而不是格式化值的Map?
但是這會違反保持模型的視圖分離。 – 2008-12-12 17:45:47