当我的输入是复合组件时,我在使用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?
一起使用