【问题标题】:f:param not working in p:fileDownloadf:param 在 p:fileDownload 中不起作用
【发布时间】:2014-12-08 10:28:19
【问题描述】:

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

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

效果很好。但是,当使用 &lt;p:fileDownload&gt; 组件时,我似乎无法让它工作:

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

triggerValidation 参数到达验证器时为 null(无论 &lt;f:param&gt; 元素是 &lt;p:commandButton&gt;&lt;p:fileDownload&gt; 组件的子元素)。

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

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

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

【问题讨论】:

  • 一方面,&lt;f:param/&gt; 只能应用于UIComponent 的孩子; &lt;p:fileDownload/&gt; 是一个标签处理程序。您现在尝试做的类似于尝试将&lt;f:param/&gt; 附加到&lt;c:forEach/&gt;

标签: jsf primefaces


【解决方案1】:

即使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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2012-09-19
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多