【发布时间】:2014-12-08 10:28:19
【问题描述】:
我正在使用以下代码使自定义验证器在某些按钮按下时跳过验证:
<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");
任何关于为什么会发生这种情况的见解将不胜感激!
【问题讨论】:
-
一方面,
<f:param/>只能应用于UIComponent的孩子;<p:fileDownload/>是一个标签处理程序。您现在尝试做的类似于尝试将<f:param/>附加到<c:forEach/>。
标签: jsf primefaces