谁能告诉我如何自动设置<h:selectOneMenu>
(或任何其他组件)的值取决于另一个<h:selectOneMenu>
,如果表单上的“必需”设置为“真”的空元素?如果要设置,<a4j:support event="onchange" reRender="anotherElement" immediate="true" />
则不会更改任何内容,因为未设置更改的值。但是如果没有immediate="true"
我总是有消息说这个或那个元素不能为空。这是不起作用的代码示例。
<h:outputLabel value="* #{msg.someField}: "/>
<h:panelGrid cellpadding="0" cellspacing="0">
<h:selectOneMenu id="someSelect"
value="#{MyBean.someObj.someId}"
required="true" label="#{msg.someField}"
>
<a4j:support event="onchange" reRender="anotherSelect" limitToList="true" immediate="true"/>
<f:selectItem itemValue=""/>
<f:selectItems value="#{MyBean.someList}"/>
</h:selectOneMenu>
<rich:message for="someSelect" styleClass="redOne"/>
</h:panelGrid>
<h:outputLabel value="* #{msg.anotherField}: "/>
<h:panelGrid cellpadding="0" cellspacing="0">
<h:selectOneMenu id="anotherSelect"
value="#{MyBean.someObj.anotherId}"
required="true" label="#{msg.anotherField}"
>
<f:selectItem itemValue=""/>
<f:selectItems value="#{MyBean.anotherList}"/>
</h:selectOneMenu>
<rich:message for="anotherSelect" styleClass="redOne"/>
</h:panelGrid>
<h:outputLabel value="* #{msg.name}: "/>
<h:panelGrid cellpadding="0" cellspacing="0">
<h:inputText id="myName" value="#{MyBean.someObj.myName}"
required="true" label="#{msg.name}"/>
<rich:message for="myName" styleClass="redOne"/>
</h:panelGrid>
所以,在这里(我重复一遍),如果我尝试更改“someSelect”,那么“anotherSelect”应该更新它的值,但它不会因为当它试图获取“someSelect”的值时它会变为空(如果immediate
设置为true
)或表单验证在空元素上失败。如何跳过验证但从“someSelect”获取更改后的值?