如何转发回JSP页面而不会丢失在字段中输入的数据?

时间:2012-11-29 20:33:19

标签: java model-view-controller jsp

我有一个简单的基于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并显示错误消息时,他们在字段中输入的数据全部消隐。如何设置它,以便它们在字段中输入的内容仍然存在?

非常感谢任何建议或建议!

罗布

1 个答案:

答案 0 :(得分:1)

最简单的方法是将表单字段传递回ModifyUserCommand.execute()中的前向操作中的editUser.jsp。你可以用个别参数来做到这一点,即

editUser.jsp?field1=1&field2=2 

或者,您可以使用其他方法传递数据 - 即编码的JSON。

然后,您可以通过页面的请求对象处理editUser.jsp中的字段,并相应地设置表单字段值。

根据您使用的底层框架(如果有),可能还有其他方法可以执行此操作。但这是接近它的基本方式。