Value未将selectOneMenu设置为ManagedBean

时间:2014-03-12 16:42:49

标签: java jsf-2 primefaces

我有一个selectOneMenu,可以根据需要加载其他人。见:

<h:outputLabel value="Tabela: *" />
                <p:selectOneMenu id="selectOneMenuTabela"
                    converter="entityConverter"
                    value="#{orcamentoMB.tabelaSelecionada}" effect="fade"
                    required="true" requiredMessage="A Tabela é obrigatória">
                    <f:selectItem itemLabel="Selecione uma Tabela" itemValue="" />
                    <f:selectItems value="#{orcamentoMB.tabelas}" var="tabela"
                        itemLabel="#{tabela.nome}" itemValue="#{tabela}" />
                    <p:ajax event="change" update="selectOneMenuProcedimento" />
                </p:selectOneMenu>

                <h:outputText value="Procedimento: *" />
                <p:selectOneMenu id="selectOneMenuProcedimento"
                    disabled="#{orcamentoMB.tabelaSelecionada == null}"
                    converter="entityConverter" filter="true"
                    filterMatchMode="contains"
                    value="#{orcamentoMB.itemTabelaProcedimentoSelecionado}"
                    effect="fade" required="true"
                    requiredMessage="O procedimento é obrigatório">
                    <f:selectItem itemLabel="Selecione um Procedimento" itemValue="" />
                    <f:selectItems value="#{orcamentoMB.tabelaSelecionada.itens}"
                        var="item" itemLabel="#{item.procedimento.nome}"
                        itemValue="#{item}" />
                    <p:ajax event="change"
                        update="localAplicacao, selectOneMenuDente,selectOneMenuFace" />
                </p:selectOneMenu>

                <h:outputText value="Local Aplicação: *" />
                <h:outputText id="localAplicacao"
                    value="#{orcamentoMB.itemTabelaProcedimentoSelecionado.procedimento.localAplicacao.descricao}" />

                <h:outputText value="Dente: *" />
                <p:selectOneMenu id="selectOneMenuDente" converter="entityConverter"
                    filter="true" filterMatchMode="contains"
                    disabled="#{orcamentoMB.itemTabelaProcedimentoSelecionado.procedimento == null || orcamentoMB.itemTabelaProcedimentoSelecionado.procedimento.dentesAsList.size() == 0}"
                    value="#{orcamentoMB.denteSelecionado}" effect="fade">
                    <f:selectItem itemLabel="Selecione um Dente" itemValue="" />
                    <f:selectItems
                        value="#{orcamentoMB.itemTabelaProcedimentoSelecionado.procedimento.dentesAsList}"
                        var="dente" itemLabel="#{dente.descricao}" itemValue="#{dente}" />
                </p:selectOneMenu>

                <h:outputText value="Face: *" />
                <p:selectOneMenu id="selectOneMenuFace" converter="entityConverter"
                    disabled="#{orcamentoMB.itemTabelaProcedimentoSelecionado.procedimento.facesAplicacaoAsList.size() == 0 || orcamentoMB.itemTabelaProcedimentoSelecionado == null}"
                    value="#{orcamentoMB.faceSelecionada}" effect="fade">
                    <f:selectItem itemLabel="Selecione uma Face" itemValue="" />
                    <f:selectItems
                        value="#{orcamentoMB.itemOrcamento.itemTabelaProcedimento.procedimento.facesAplicacaoAsList}"
                        var="face" itemLabel="#{face.descricao}" itemValue="#{face}" />
                </p:selectOneMenu>

&#34; selectOneMenuTabela&#34;和&#34; selectOneMenuProcedimento&#34;工作正常,值在ManagedBean中设置,但其他值不是。

当我尝试执行此命令按钮时:

<p:commandButton value="Incluir" icon="ui-icon-plus" process="@this"
                    disabled="#{orcamentoMB.bean.situacao.codigo != 'AGUARDANDO_ACEITACAO'}"
                    update=":formManterOrcamento:tabViewManterOrcamento:tabProcedimentos,:formManterOrcamento:panelTotais"
                    actionListener="#{orcamentoMB.addItemOrcamento}" />

内部的价值&#34; denteSelecionado&#34;为null,并且&#34; selectOneMenuFace&#34;没有加载。

1 个答案:

答案 0 :(得分:1)

由于您在前两个selectOneMenu上有p:ajax event="change",因此您正在提交这些,这就是您获得这些价值的原因。要在单击commandButton时处理它们,请将这些组件ID添加到进程属性以及@this like like like process="@this,selectOneMenuFace,selectOneMenuDente,.."

如果该组件为disabledreadOnly,则不会对其进行处理。

希望这有帮助