下面是表单的输出, 使用了类 JSP 的表示法.
Example 2.1. 表单结构的类 JSP 描述
<form method="post" action="?">
<input type="hidden" name="_forward_" value="${requestScope._forward_}" />
<%-- 不可编辑字段
${entityBean}
--%>
<%-- 可编辑字段
<%-- 无默认值, 如果提交失败填充提交值.
${formBean}
${formError}
--%>
<%-- 有默认值, 如果提交失败恢复默认值.
${entityBean}
${formError}
--%>
<%-- 有默认值, 如果提交失败填充提交值.
<c:out value="${formBean}" default="${entityBean}"/>
${formError}
--%>
--%>
</form>
_forward_ 字段是表单处理完成(成功或者失败)之后将要跳转到的页面的相对或者绝对 URL, 在控制器中设置. 控制器先从 Request 中读取 _forward_ 参数的值, 如果为空, 再读取 HTTP Header 的 Referer 值. 如果两者都为空, 控制器将抛出异常.
不可编辑字段只作为显示信息, 使用合适的格式输出即可.
该表单在用户初次进入时和提交失败时都被显示, 所以表单字段的填充值有下列情况:
该方法一般不常用.
在实体的添加表单中一般使用该方法, 如注册表单. 也用在登录表单等.
该方法一般不常用.
在实体的编辑表单中一般使用该方法, EntityBean 从持久层中读取并填充表单, 提交后将新值交持久层保存.
因为显示表单是视图的职责, 所以, Controller 只需要提供可能的数据便可以了.