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)を返す必要がありますか?