创建表单的最佳非框架(仅限 JSP/Servlet)方法是什么,这样它可以:
- 预填充默认值/从数据库加载的数据
- 重新显示提交的验证失败的值
执行其中一项似乎相当简单,但创建同时支持两者的表单却很棘手。
例如使用
${param.scheduledDate}
非常适合在验证失败时重新显示日期,但无法在页面加载时轻松以编程方式设置。反之,
${myBean.scheduledDate}
非常适合显示从数据库加载的值,但无法在验证失败时重新显示数据,因为 bean 使用的是 Date 类型的对象,而不是字符串。
我想到了一些事情,但看起来并不是那么好:
- 使用仅包含字符串的中间 bean
- 使用 servlet 过滤器设置页面加载参数
最佳答案
在 View 侧进行。在 EL 中使用条件运算符 ?:
:
<input name="foo" value="${fn:escapeXml(empty bean.foo ? param.foo : bean.foo)}" />
请注意,我假设与 GET 不同,POST 请求在验证成功之前不会预填充 ${bean}
。
顺便说一句,这种冗长是 MVC 框架存在的原因之一。 JSF例如,通过 EditableValueHolder
完全透明地处理此问题由其他人实现的接口(interface) UIInput
组件。
关于jsp - 预填充并重新显示 HTML 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879806/