f:param在p:fileDownload中不起作用

问题描述 投票:2回答:1

我正在使用以下代码,使自定义验证器在某些按钮按下时跳过验证:

<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>组件的子代。

自定义验证器的基类内部的代码获得此参数:

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

对于为什么会发生这种情况的任何见解,将不胜感激!

jsf primefaces
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.