Ajax PrimeFaces-第二个下拉菜单(依赖selectOneMenus)中的验证错误-请求范围

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:" /

第二个下拉列表由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:" />
            <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<>();
    }
}