我正在使用以下代码,使自定义验证器在某些按钮按下时跳过验证:
<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");
对于为什么会发生这种情况的任何见解,将不胜感激!
即使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>