我有条纹:jsp中的链接标记带有事件属性:
<stripes:link href="${actionBean.context.currentStage.stripesForwardAction}" addSourcePage="true" event="showTab2Link">
这会触发验证以触发嵌套属性:
@ValidateNestedProperties({
@Validate(field="county", required=true, minlength=2, maxlength=2, mask="\\d\\d"),
@Validate(field="parish", required=true, minlength=3, maxlength=3, mask="\\d\\d\\d"),
@Validate(field="holding", required=true, minlength=4, maxlength=4, mask="\\d\\d\\d\\d")
})
但是,如果验证的实际值不存在,那么这将是正常的,但它们存在于html中并且在调试bean时。
为什么stripe:link会触发这个?
如果我将其更改为条纹:提交然后就可以了。
感谢,
戴夫
答案 0 :(得分:2)
它被触发的原因是因为条带:submit必须具有表单中的字段,因此在提交表单时这些字段将传输到服务器。使用该链接,除非将它们添加为链接参数,否则不会获得任何字段。
您可以通过以下两种方式解决此问题:
在单击链接时,您是否希望bean上存在这些字段?然后你需要用params填充链接,这样就可以添加GET查询字符串样式:
<stripes:link href="${actionBean.context.currentStage.stripesForwardAction}" addSourcePage="true" event="showTab2Link">
<stripes:param name="county" value="${actionBean.county}" />
<stripes:param name="parish" value="${actionBean.parish}" />
<stripes:param name="holding" value="${actionBean.holding}" />
link text
</stripes:link>
另一方面,如果您的bean中不需要它们,那么您可以告诉@ValidateNestedProperties忽略该事件:
@ValidateNestedProperties({
@Validate(field="county", on="!showTab2Link", required=true, minlength=2, maxlength=2, mask="\\d\\d"),
@Validate(field="parish", on="!showTab2Link", required=true, minlength=3, maxlength=3, mask="\\d\\d\\d"),
@Validate(field="holding", on="!showTab2Link", required=true, minlength=4, maxlength=4, mask="\\d\\d\\d\\d")
})
然后,除非实际提供验证,否则不会在事件showTab2Link上运行验证。