下面是表单的输出, 使用了类 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 只需要提供可能的数据便可以了.