我有一个简单的基于MVC的JSP应用程序。类似的东西:
*.jsp -> ControllerServlet -> *Command.java -> *Service.java -> *DAO.java -> Oracle db
应用程序中的典型链接如下所示:
myapp/controller?cmd=ShowEditUser&userid=55
这导致ShowEditUserCommand.java
execute()方法运行并转发到editUser.jsp
在editUser.jsp
中,他们填写字段,然后点击发布到Save
的{{1}} myapp/controller?cmd=ModifyUser
运行ModifyUserCommand.java
execute()方法,该方法修改用户数据并转发到viewUser.jsp
。
一切正常。
问题是,在ModifyUserCommand.execute()
我正在检查用户名是否唯一。如果他们尝试输入已存在的用户名,我会将错误值设置为true
,将errorMessage值设置为Already in use
。
然后由于错误,我转发到原始editUser.jsp
(而不是viewUser.jsp),错误显示在表单上方。
我的问题是(终于!;) - 当用户返回editUser.jsp
并显示错误消息时,他们在字段中输入的数据全部消隐。如何设置它,以便它们在字段中输入的内容仍然存在?
非常感谢任何建议或建议!
罗布
答案 0 :(得分:1)
最简单的方法是将表单字段传递回ModifyUserCommand.execute()中的前向操作中的editUser.jsp。你可以用个别参数来做到这一点,即
editUser.jsp?field1=1&field2=2
或者,您可以使用其他方法传递数据 - 即编码的JSON。
然后,您可以通过页面的请求对象处理editUser.jsp中的字段,并相应地设置表单字段值。
根据您使用的底层框架(如果有),可能还有其他方法可以执行此操作。但这是接近它的基本方式。