一尘不染

验证除验证框架以外的struts2形式

jsp

在我的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不是列表/集合,因为列表不再位于值堆栈中。请有人指导我如何以其他方式进行验证?谢谢。


阅读 193

收藏
2020-06-08

共1个答案

一尘不染

您要解决的所有问题是从validate()方法返回时重新填充列表。我想您的操作会扩展ActionSupport,如果没有,那么您应该这样做。覆盖validate()方法。在那里,您应该检查hasActionErrors()hasFieldErrors()。如果有,则重新填充列表。好的做法是,应分离用于呈现JSP的代码,并在validate方法中重用它。之后validate()INPUT结果返回没有行动的执行。

2020-06-08