o:validateBean method =“validateCopy”不验证复合组件中的输入

时间:2015-07-29 12:47:16

标签: jsf el bean-validation composite-component omnifaces

当我的输入是复合组件时,我在使用OmniFaces 2.1 o:validateBean with method =“validateCopy”时遇到问题。使用method =“validateActual”,它会按预期验证。

JSF实施:Mojarra 2.2.8-jbossorg-1。

我的复合组件来源:

<composite:interface>
    <composite:attribute name="target" />
    <composite:attribute name="label"/>
    <composite:attribute name="value" />
    <composite:attribute name="required" />
    <composite:attribute name="size" />
    <composite:attribute name="disabled" />
    <composite:attribute name="styleInput" required="false" />
    <composite:editableValueHolder name="input" targets="input" />
    <composite:clientBehavior name="change" event="change" targets="input" />
    <composite:clientBehavior name="keypress" event="keypress" targets="input" />
</composite:interface>

<composite:implementation>
    <p:outputLabel id="label" for="input" value="#{cc.attrs.label}" />
    <h:panelGrid columns="3">
        <p:inputText id="input" value="#{cc.attrs.value}" 
          style="#{cc.attrs.styleInput}" size="#{cc.attrs.size}"
          disabled="#{cc.attrs.disabled}" required="#{cc.attrs.required}">
        </p:inputText>
        <p:message for="input" display="icon">
          <p:effect type="pulsate" event="load" delay="500" />
        </p:message>
    </h:panelGrid>
</composite:implementation>

我找到了omnifaces源代码并进入下面的源代码点,在o:validateBean中:

ValueReference valueReference = getValueReference(context.getELContext(), valueExpression);

if (valueReference.getBase().equals(base)) {
    operation.run((EditableValueHolder) component, valueReference);
}

在我使用简单输入文本的情况下,valueReference()。getBase()返回我的被验证bean。在我使用复合组件的情况下,valueReference()。getBase()返回对CompositeComponentAttributesELResolver.ExpressionEvalMap的引用。

是否可以改变我的复合组件,以便它与o:validateBean?

一起使用

0 个答案:

没有答案