f:param无法在p:fileDownload中工作

时间:2014-12-08 10:28:19

标签: jsf primefaces

我使用以下代码导致自定义验证程序在某些按键按下时跳过验证:

<p:commandButton ... value="Don't Validate">
    <f:param name="triggerValidation" value="false"/>
</p:commandButton>

哪个工作得很好。但是,在使用<p:fileDownload>组件时,我似乎无法使用此功能:

<p:commandButton ... value="Don't Validate">
    <p:fileDownload value="#{someWebBean.download()}">
        <f:param name="triggerValidation" value="false"/>
    </p:fileDownload>
</p:commandButton>

triggerValidation参数在到达验证程序时为null(无论<f:param>元素是<p:commandButton>还是<p:fileDownload>的子元素} component)。

自定义验证器基类中的代码获取此参数:

Object o = ((HttpServletRequest) context.getExternalContext().getRequest()).getParameter("triggerValidation");

非常感谢任何有关为何发生这种情况的见解!

1 个答案:

答案 0 :(得分:0)

即使p:commandButton包含p:fileDownload,该参数仍必须位于p:commandButton上,而不是p:fileDownload

<p:commandButton ... value="Don't Validate">
    <f:param name="triggerValidation" value="false"/>

    <p:fileDownload value="#{someWebBean.download()}" />
</p:commandButton>

另请参阅How to pass a parameter along with h:commandButton