在我阅读的每个教程中都涵盖了struts2验证或工作流拦截器,给出的示例非常基础,并假设每个表单字段都有一个固定的名称,并在.jsp文件中预定义。 E.g:
<s:form method="post" validate="true">
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit cssClass="btn btn-primary"/>
</s:form>
但是,我目前有一个使用javascript动态创建的表单。页面加载时,ajax用于从数据库中获取国家/地区列表(以及这些国家/地区的元数据)。下拉框中填充了这些国家/地区的名称。对于每个国家/地区,将生成一些输入字段并将其添加到DOM,但这些字段在选择国家之前保持隐藏状态。这些输入有id,例如:
france_extra_data_1
france_extra_data_2
france_extra_data_3
germany_extra_data_1
germany_extra_data_2
america_extra_data_1
america_extra_data_2
america_extra_data_3
america_extra_data_4
... and so on
当用户选择国家/地区时,例如美国,将显示ID名称中包含美国的输入。其他人仍然隐藏着。美国国家并不总是有4个与之相关的输入。所有输入都是在现场生成的原因,而不仅仅是在选择合适的国家/地区时,因为所有输入都有占位符文本,我不希望每次从数据库中获取此数据,但只需在页面加载时获取一次。 / p>
问题是当我想用struts2验证这个表单时。验证器需要知道字段的名称,但我事先不知道将有多少输入(取决于数据库),我也不知道哪些字段应该被验证,哪些字段应该被忽略(在上面的示例中,仅id为美国的输入。)
struts2框架可以解决这个问题吗?
我已经阅读了这个问题:dynamic field name for field validator in struts2,但我不需要访问者字段验证器!