jsp - 预填充并重新显示 HTML 表单

标签 jsp servlets

创建表单的最佳非框架(仅限 JSP/Servlet)方法是什么,这样它可以:

  1. 预填充默认值/从数据库加载的数据
  2. 重新显示提交的验证失败的值

执行其中一项似乎相当简单,但创建同时支持两者的表单却很棘手。

例如使用

${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/

相关文章:

java - 将变量从 JSP 传递到另一个 JSP

java - 在 Eclipse 中部署时需要帮助将子项目链接到主项目

jsp - 如何在 JSP 或 JSTL 中获取页面名称?

java - Spring Maven 应用程序中的单个无状态 Servlet

java - 自定义 Jira 插件 : Cannot Update an issue

java - struts2 带有操作的确认框

java - 只读微调器

java - 通过 Servlet 进行身份验证

java - 从 Java 类启动 Servlet,就像从 HTML 代码启动一样

java - 如何从命令行重新加载 Tomcat Java Server 应用程序?