在 o:validateOrder OmniFaces 2.0 中将参数传递给资源文件

Passing argument to Resource file in o:validateOrder OmniFaces 2.0

您好,我正在开发和应用:

.JSF 2.1 .OmniFaces 2.0

我有一个带占位符的资源文件

comun.abm.fecha.factura.menor.ultimo.comprobante=La fecha de la Factura tiene que ser mayor o igual a la ultima fecha de emision del ultimo comprobante: {0}

我有这个验证:

<h:outputLabel value="#{msgs['facturacion.abm.generacion.padron.fecha.factura']}" 
               for="fechaFactura"/>

<rich:calendar
    id="fechaFactura"
    datePattern="dd/MM/yyyy"
    showWeeksBar="false"
    enableManualInput="true"
    value="#{generacionPadronController.padronBean.fechaFactura}" />

<h:panelGroup>
    <rich:message for="fechaFactura"/>

    <o:outputFormat value="#{msgs['comun.abm.fecha.factura.menor.ultimo.comprobante']}" 
                    var="_validacion">
        <f:param value="#{generacionPadronController.fechaEmisionComprobanteUltima}" />
    </o:outputFormat>

    <o:validateOrder id="validacionFechaFacturaMayorAFechaEmisionUltimoComprobante"
                     type="lte"
                     components="fechaFactura fechaEmisionComprobanteUltima"
                     message="#{_validacion}"
                     showMessageFor="fechaFactura">
    </o:validateOrder>
</h:panelGroup>

验证有效并向我发送空消息可能是因为变量没有值,任何其他实现此目的的想法(将参数传递给带有 o:validateOrder 的包)。

PD:我打印 #{_validacion} 并在页面中正常工作,但在触发验证时为空。

<o:outputFormat var> 在渲染响应阶段设置。但是,<o:validateXxx message> 是在验证阶段评估的,这太早了。

最好改用 #{of:format1()} 函数。

<o:validateOrder id="validacionFechaFacturaMayorAFechaEmisionUltimoComprobante"
                 type="lte"
                 components="fechaFactura fechaEmisionComprobanteUltima"
                 message="#{of:format1(msgs['comun.abm.fecha.factura.menor.ultimo.comprobante'], generacionPadronController.fechaEmisionComprobanteUltima)}"
                 showMessageFor="fechaFactura">
</o:validateOrder>