在我的Struts2 JSP表单中,有文本字段和选择标记。例如,
<s:form> <s:textfield name="name" label="Name"/> <s:textfield name="dob" label="Date of Birth"/> <s:select name="degree" list="degreeList" listKey="degreeID" listValue="degreeName"/> <s:submit/> </s:form>
在加载此JSP之前,我填写degreeList了动作类。我需要验证此表格。所以我尝试了验证框架。但是问题是"input"如果验证失败,动作类将返回自身。degreeList如果验证失败,我将无法重新填充。因此,无法加载上述JSP。错误提示degreeList不是列表/集合,因为列表不再位于值堆栈中。请有人指导我如何以其他方式进行验证?谢谢。
degreeList
"input"
您要解决的所有问题是从validate()方法返回时重新填充列表。我想您的操作会扩展ActionSupport,如果没有,那么您应该这样做。覆盖validate()方法。在那里,您应该检查hasActionErrors()和hasFieldErrors()。如果有,则重新填充列表。好的做法是,应分离用于呈现JSP的代码,并在validate方法中重用它。之后validate()将INPUT结果返回没有行动的执行。
validate()
ActionSupport
hasActionErrors()
hasFieldErrors()
validate
INPUT