validation除validation框架之外的struts2表单
在我的Struts2 JSP表单中,有文本字段和选择标记。 例如,
在加载这个JSP之前,我在action类中填充了degreeList
。 我需要validation这个表单。 所以我尝试了validation框架。 但问题是如果validation失败,动作类将返回"input"
本身。 如果validation失败,我无法重新填充degreeList
。 所以上面的JSP无法加载。 错误说, degreeList
不是列表/集合,因为列表不再在值堆栈中。 有人请指导我如何以其他方式validation? 谢谢。
当你从validate()
方法返回时,你需要解决的所有问题都是重新填充列表。 我想你的行动扩展了ActionSupport
,如果没有,你应该这样做。 覆盖validate()
方法。 你应该检查hasActionErrors()
和hasFieldErrors()
。 如果有的话重新填充列表。 作为一种好的做法,您应该分离用于呈现JSP的代码并在validate
方法中重用它。 在validate()
, INPUT
结果返回而没有执行动作。
没有什么能阻止你在execute()中进行validation并返回你想要的结果字符串或抛出exception。
但真正的问题似乎是“如果validation失败,我无法重新填充degreeList”,为什么不呢,为什么不能将它们发送回同一个表单?
您应该能够注释您的操作(或使用struts.xml),如果返回“输入”,则重定向到相应的页面,即使这意味着在发送表单之前的页面或不太合理的页面声明“抱歉,您放置在错误的价值观和由于时间敏感的forms,我们永远不会给你再次尝试的选择:)“
更新 :
@Results ({@Result(name =“input”,location =“/ package / my-action”)})