我想为网络应用实施表单处理。我想实现PRG(post-redirect-get),因为我相信这是表单处理的方式(重载和后退按钮非常好)。但是,我发现它使验证变得复杂。
基本上,当您发布时,您具有表单状态(作为post参数)。但是,如果您验证并重定向回到表单,则会丢失表单状态(您的重定向是GET;您可以在GET中编码所有表单参数,但由于URL长度限制,这并不总是可行。此外,它看起来丑陋的地狱)。
我正在考虑以下事项:
/addUserDetails.html
)/addUser
)/addUser
执行相关操作。如果失败,它会存储表单状态,为其分配一个id并重定向到表单视图,id为get参数(/addUserDetails.html?state=2313ab2
)根据您存储表单状态的方式,您可能还会让用户继续处理表单,即使他们的浏览器爆炸或发生了不好的事情。
思考?此外,是否有任何Java Web框架可以执行此操作或可以强制执行此操作?
答案 0 :(得分:2)
您不必将所有状态保留在重定向网址中。我这样做与你的方法有点不同,它对我们的用例非常有用。
如果表单未通过验证,我不会重定向。我只是使用输入的值重新填充表单,并突出显示错误,这正是您在没有PRG的情况下所做的事情。只有在POST成功时,我才会将浏览器重定向到GET页面。在您的情况下,您只需要在URL中使用用户名,这样您就可以显示个性化的欢迎页面。
是的,我们将在失败的表单上进行双重提交,但这对我们的用例来说更合适。当用户导航回表单时,他们将再次收到错误并恢复工作。由于验证,没有双重提交,这是我们唯一要避免的事情。
答案 1 :(得分:1)
尝试Wicket - 它默认执行此操作。