我有一个jsf形式的2个字段。字段1使用rich:autocomplete,字段2使用inputText。我在字段2中键入无效数据,以便显示验证消息。接下来,我开始在字段1中键入。一旦我这样做,字段2中的验证消息就会消失。我该如何防止这种情况?
<h:outputLabel value="Field 1:" escape="false"/>
<h:panelGroup>
<rich:autocomplete id="id1" mode="ajax" showButton="false"
autocompleteMethod="#{bean.method}"
autocompleteList="#{bean.aList}"
value="#{bean.field}"
required="true"
requiredMessage="Field 1 required">
<a4j:ajax event="blur" execute="@this" bypassUpdates="#{true}" render="id1,id1Msg" />
</rich:autocomplete>
<rich:message for="id1" id="id1Msg" />
</h:panelGroup>
<h:outputLabel for="id2" value="Field 2:"/>
<h:panelGroup>
<h:inputText id="id2" value="#{bean.field2}" style="width: 175px;" required="true" requiredMessage="Field 2 required" validatorMessage="Field 2 Please enter digits only" converterMessage="Field 2 - Please enter digits only">
<f:ajax event="change" execute="@this" bypassUpdates="#{true}" render="id2Msg"/>
</h:inputText>
<rich:message for="id2" id="id2Msg"/>
</h:panelGroup>
答案 0 :(得分:0)
在execute="@form"
上设置id2
。这将导致id2
始终触发整个表单的提交,即使它失去焦点,也会导致验证消息出现
execute="@this"
上的{p> id2
表示只会触发父组件
答案 1 :(得分:0)
我在id1上使用execute =“@ form”获得了所需的行为。