条带链接事件触发验证不正确

时间:2010-06-09 13:45:20

标签: java web-applications stripes

我有条纹: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会触发这个?
如果我将其更改为条纹:提交然后就可以了。

感谢,

戴夫

1 个答案:

答案 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上运行验证。