Ajax PrimeFaces-第二个下拉菜单(依赖selectOneMenus)中的验证错误-请求范围
第二个下拉列表由AJAX填充,但其中存在验证错误。即使列表已正确填充并进行了选择Ajax PrimeFaces-第二个下拉菜单(依赖selectOneMenus)中的验证错误-请求范围,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,第二个下拉列表由AJAX填充,但其中存在验证错误。即使列表已正确填充并进行了选择 <h:form id="form"> <p:growl id="growl" showDetail="true" sticky="true" globalOnly="true" /> <h:panelGrid columns="3"> <p:outputLabel for="nome" value="Nome:" /
<h:form id="form">
<p:growl id="growl" showDetail="true" sticky="true" globalOnly="true" />
<h:panelGrid columns="3">
<p:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome" value="#{estadoMB.estado.nome}" required="true" validatorMessage="Nome incorreto!" />
<p:message for="nome" />
<p:outputLabel for="sigla" value="Sigla:" />
<p:inputText id="sigla" value="#{estadoMB.estado.sigla}" maxlength="3" size="3" required="true" validatorMessage="Sigla incorreta!" />
<p:message for="sigla" />
<p:outputLabel for="continentes" value="Continente:" />
<p:selectOneMenu id="continentes" value="#{estadoMB.continenteId}" validatorMessage="Selecione um continente!"> <!-- required="# {not empty param[submit.clientId]}" binding="# {menuContinentes}" -->
<f:selectItem itemValue="" itemLabel="-- Selecione --" noSelectionOption="true" />
<f:selectItems value="#{continenteMB.continentes}" var="continente" itemLabel="#{continente.nome}" itemValue="#{continente.id}" />
<p:ajax event="change" listener="#{estadoMB.onPaisesChange}" update="paises" />
</p:selectOneMenu>
<p:message for="continentes" />
<p:outputLabel for="paises" value="País:" />
<p:selectOneMenu id="paises" value="#{estadoMB.pais.id}" validatorMessage="Selecione um país!"> <!-- required="# {not empty param[menuContinentes.clientId]or not empty param[submit.clientId]}" -->
<f:selectItem itemValue="" itemLabel="-- Selecione --" noSelectionOption="true" />
<f:selectItems value="#{estadoMB.paisesCarregados}" var="pais" itemLabel="#{pais.nome}" itemValue="#{pais.id}" />
</p:selectOneMenu>
<p:message for="paises" />
<p:commandButton action="#{estadoMB.save}" value="Salvar" update="@form" /> <!-- binding="# {submit}" -->
</h:panelGrid>
</h:form>
已经尝试过EL绑定;required=两者都为true,我得到了相同的结果
我认为使用请求范围的bean不可能实现我想要的…我认为使用请求范围的bean不可能实现我想要的。至少使用@ViewScoped。谢谢。但如果我以后不能使用ViewScope,该怎么办?转换器?我不明白为什么以后不能使用@ViewScoped。请详细解释你真正的问题。我现在可以使用它,它起作用了。呵呵,谢谢,但我也很期待。当需要多个选择并且由于某种原因无法更改范围时,我考虑了每个屏幕一个选择。选择了类似大陆的内容,然后单击“确定”并在下一个屏幕中选择国家。由于数据不会出现在同一个视图中,因此从@RequestScoped开始讨论是徒劳的。如果希望/需要处理流,请改用@FlowScoped。
public void onPaisesChange() {
if(pais != null) {
Map<String, Object> map = new HashMap<>();
map.put("id", getContinenteId());
paisesCarregados = paisBean.findWithNamedQuery("Pais.findByContinenteId", map);
}
else {
paisesCarregados = new ArrayList<>();
}
}