更新从另一页面中选择一个菜单

时间:2015-03-12 19:24:32

标签: java-ee jsf-2 primefaces

我需要更新另一个JSF页面的选择菜单。 我已经尝试了各种方法,并始终发生​​组件未找到错误 这是我的xhtml页面:

<?xml version='1.0' encoding='ISO-8859-1' ?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:pe="http://primefaces.org/ui/extensions"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:forgeview="http://jboss.org/forge/view"   
    xmlns:p="http://primefaces.org/ui"
    template="/resources/scaffold/pageTemplate.xhtml">

    <f:metadata>
        <f:viewParam name="id" value="#{voucherBean.id}"/>
        <f:event type="preRenderView" listener="#{voucherBean.retrieve}"/>

    </f:metadata>

    <ui:param name="pageTitle" value="Create Voucher"/>

    <ui:define name="header">

    </ui:define>

    <ui:define name="subheader">
        <c:choose>
            <c:when test="#{!empty voucherBean.id}">
                Edição 
            </c:when>
            <c:otherwise>
                Emissão
            </c:otherwise>
        </c:choose>
    </ui:define>

    <ui:define name="footer"/>

    <ui:define name="main" >
        <h:form role="form" prependId="false" id="create"  acceptcharset="ISO-8859-1">
            <h:messages globalOnly="true" styleClass="error"/>

            <h:panelGrid columnClasses="label,component,required" columns="3">
                <h:outputLabel for="voucherBeanVoucherDataEmissao" value="Data Emissão:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control"  id="voucherBeanVoucherDataEmissao" value="#{voucherBean.voucher.dataEmissao}" readonly="true">
                        <f:convertDateTime type="date"/>
                    </h:inputText>
                    <h:message for="voucherBeanVoucherDataEmissao" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherHora" value="Hora:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherHora" value="#{voucherBean.voucher.hora}" readonly="true">
                        <f:convertDateTime type="time"/>
                    </h:inputText>
                    <h:message for="voucherBeanVoucherHora" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherBandeiraIntervalo" value="Bandeira:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" value="#{voucherBean.voucher.bandeiraIntervalo.bandeira.nome}" readonly="true" />
                    <h:inputHidden id="voucherBeanVoucherBandeiraIntervalo" value="#{voucherBean.voucher.bandeiraIntervalo}" placeholder="#{voucherBean.voucher.bandeiraIntervalo.bandeira.nome}" readonly="true" />
                    <h:message for="voucherBeanVoucherBandeiraIntervalo" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherOrigem" value="Origem:"/>
                <h:panelGroup>
                    <h:selectOneMenu styleClass="form-control" disabled="true" converter="#{origemBean.converter}" readonly="true"  id="voucherBeanVoucherOrigem" value="#{voucherBean.voucher.origem}">
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.nome)}" itemValue="#{_item}" value="#{origemBean.all}" var="_item"/>
                    </h:selectOneMenu>
                    <h:message for="voucherBeanVoucherOrigem" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherDestinoVoucher" value="Destino:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherDestinoVoucher" value="#{voucherBean.voucher.destinoVoucher}" readonly="true"/>
                    <h:message for="voucherBeanVoucherDestinoVoucher" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherDistanciaKm" value="Distancia Km:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherDistanciaKm" value="#{voucherBean.voucher.distanciaKm}" readonly="true"/>
                    <h:message for="voucherBeanVoucherDistanciaKm" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherTarifaCorrida" value="Valor km rodado:"/>
                <h:panelGroup>
                    <h:selectOneMenu styleClass="form-control" disabled="true" converter="#{tarifaCorridaBean.converter}" id="voucherBeanVoucherTarifaCorrida" value="#{voucherBean.voucher.tarifaCorrida}" readonly="true">
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.valorKm)}" itemValue="#{_item}" value="#{tarifaCorridaBean.all}" var="_item"/>
                    </h:selectOneMenu>
                    <h:message for="voucherBeanVoucherTarifaCorrida" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherVolumePequeno" value="Quantidade de Volumes Pequenos:"/>
                <h:panelGroup>
                    <h:inputHidden id="tarifaVPequenos" value="#{searchBean.valorVPequenos}"/>
                    <h:inputHidden id="isentoVPequenos" value="#{searchBean.isentoVolumesMao}"/>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherVolumePequeno" value="#{voucherBean.voucher.volumePequeno}"  onkeyup="calculaTarifaVolumesPequenos()" required="true"/>
                    <h:message for="voucherBeanVoucherVolumePequeno" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherTotalVolumesPequenos" value="Total Cobrado por Volumes Pequenos:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherTotalVolumesPequenos"  readonly="true" />
                    <h:inputHidden id="voucherBeanVoucherTotalVolumesPequenos1" value="#{voucherBean.voucher.totalVolumesPequenos}" />
                    <h:message for="voucherBeanVoucherTotalVolumesPequenos" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherVolumeNormal" value="Quantidade de Volumes Normais:"/>
                <h:panelGroup>
                    <h:inputHidden id="tarifaVNormais" value="#{searchBean.valorVNormais}" readonly="true"/>
                    <h:inputHidden id="isentoVNormais" value="#{searchBean.isentoVolumesNormais}"/>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherVolumeNormal" value="#{voucherBean.voucher.volumeNormal}" onkeyup="calculaTarifaVolumesNormais()" required="true"/>
                    <h:message for="voucherBeanVoucherVolumeNormal" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherTotalVolumesNormais" value="Total Cobrado por Volumes Normais:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherTotalVolumesNormais" readonly="true" />
                    <h:inputHidden  id="voucherBeanVoucherTotalVolumesNormais1" value="#{voucherBean.voucher.totalVolumesNormais}"  />
                    <h:message for="voucherBeanVoucherTotalVolumesNormais" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherVolumeGrande" value="Quantidade de Volumes Grandes:"/>
                <h:panelGroup>
                    <h:inputHidden id="tarifaVGrandes" value="#{searchBean.valorVGrandes}" readonly="true"/>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherVolumeGrande" value="#{voucherBean.voucher.volumeGrande}" onkeyup="calculaTarifaVolumesGrandes()" required="true"/>
                    <h:message for="voucherBeanVoucherVolumeGrande" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherTotalVolumesGrandes" value="Total Volumes Grandes:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherTotalVolumesGrandes" readonly="true" />
                    <h:inputHidden id="isentoVGrandes" value="#{searchBean.isentoVolumesGrandes}"/>
                    <h:inputHidden id="voucherBeanVoucherTotalVolumesGrandes1" value="#{voucherBean.voucher.totalVolumesGrandes}" />
                    <h:message for="voucherBeanVoucherTotalVolumesGrandes" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherVeiculo" value="Prefixo:"/>
                <h:panelGroup styleClass="form-group"> 
                    <h:selectOneMenu converter="#{veiculoBean.converter}" id="voucherBeanVoucherVeiculo" styleClass="form-control" value="#{voucherBean.voucher.veiculo}">
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.prefixo)}" itemValue="#{_item}" value="#{veiculoBean.all}" var="_item" />
                    </h:selectOneMenu>

                     <h:link outcome="prefixoModal.xhtml" value="+" target="_new"   styleClass="btn btn-success" 
                        style="vertical-align:bottom"/>
                        <h:message for="voucherBeanVoucherVeiculo" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>             
                <h:outputLabel for="voucherBeanVoucherPessoa" value="Passageiro:"/>
                <h:panelGroup>
                    <h:selectOneMenu styleClass="form-control" converter="#{pessoaBean.converter}" id="voucherBeanVoucherPessoa" value="#{voucherBean.voucher.pessoa}" >
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.nome)}" itemValue="#{_item}" value="#{pessoaBean.all}" var="_item"/>
                    </h:selectOneMenu>
                     <div  class="btn-group">
                     <h:link outcome="/voucher/passageiromodal.xhtml" value="+" target="_new"   styleClass="btn btn-success" 
                        style="vertical-align:bottom" />                
                     </div>
                    <h:message for="voucherBeanVoucherPessoa" styleClass="error"/>      
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherValorCorrida" value="Valor Corrida:"/>
                <h:panelGroup >
                    <h:inputText id="voucherBeanVoucherValorCorrida" value="#{voucherBean.voucher.valorCorrida}" 
                        styleClass="form-control" readonly="true"/>                         
                    <h:inputHidden  id="searchBeanValorCorrida" 
                        styleClass="form-control" readonly="true"/>                     
                    <h:inputHidden id="voucherBeanVoucherValorCorrida1" value="#{voucherBean.voucher.valorCorrida}" />
                    <h:message for="voucherBeanVoucherValorCorrida" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherValorExtras" value="Valor Extras:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherValorExtras" readonly="true"/>
                    <h:inputHidden  id="voucherBeanVoucherValorExtras1" value="#{voucherBean.voucher.valorExtras}"  /> 
                    <h:message for="voucherBeanVoucherValorExtras" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>         
                <h:outputLabel for="voucherBeanVoucherValorVoucher" value="Valor Total Voucher:"/>
                <h:panelGroup>
                    <h:inputText styleClass="form-control" id="voucherBeanVoucherValorVoucher" readonly="true" />
                    <h:inputHidden id="voucherBeanVoucherValorVoucher1" value="#{voucherBean.voucher.valorVoucher}" />      
                    <h:message for="voucherBeanVoucherValorVoucher" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/> 
                <h:outputLabel for="voucherBeanVoucherFormaPagamento" value="Forma Pagamento:"/>
                <h:panelGroup>
                    <h:selectOneMenu styleClass="form-control" converter="#{formaPagamentoBean.converter}" id="voucherBeanVoucherFormaPagamento" value="#{voucherBean.voucher.formaPagamento}">
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.nome)}" itemValue="#{_item}" value="#{formaPagamentoBean.all}" var="_item"/>
                    </h:selectOneMenu>
                    <h:message for="voucherBeanVoucherFormaPagamento" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherConvenio" value="Convênio:"/>
                <h:panelGroup>
                    <h:selectOneMenu styleClass="form-control"  converter="#{convenioBean.converter}" id="voucherBeanVoucherConvenio" value="#{voucherBean.voucher.convenio}">
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.nomeFantasia)}" itemValue="#{_item}" value="#{convenioBean.all}" var="_item"/>
                    </h:selectOneMenu>
                    <h:message for="voucherBeanVoucherConvenio" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>             
                <h:outputLabel for="voucherBeanVoucherObservacao" value="Observação:"/>
                <h:panelGroup>
                    <h:inputTextarea  styleClass="form-control" id="voucherBeanVoucherObservacao" value="#{voucherBean.voucher.observacao}"/>
                    <h:message for="voucherBeanVoucherObservacao" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherEmbarque" value="Embarque:"/>
                <h:panelGroup>
                    <h:selectBooleanCheckbox id="voucherBeanVoucherEmbarque" value="#{voucherBean.voucher.embarque}"/>
                    <h:message for="voucherBeanVoucherEmbarque" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>
                <h:outputLabel for="voucherBeanVoucherUsuario" value="Usuário:"/>
                <h:panelGroup>
                    <h:selectOneMenu styleClass="form-control" converter="#{usuarioBean.converter}" id="voucherBeanVoucherUsuario" value="#{voucherBean.voucher.usuario}" disabled="true">
                        <f:selectItem/>
                        <f:selectItems itemLabel="#{forgeview:display(_item.nome
                        )}" itemValue="#{_item}" value="#{usuarioBean.all}" var="_item"/>
                    </h:selectOneMenu>
                    <h:message for="voucherBeanVoucherUsuario" styleClass="error"/>
                </h:panelGroup>
                <h:outputText/>

            </h:panelGrid>      
            <div class="buttons">
                <h:commandButton value="#{msg['btn-save']}" action="#{voucherBean.update}" styleClass="btn btn-primary"/>
                <c:choose>
                    <c:when test="#{!empty voucherBean.id}">
                        <h:link value="#{msg['btn-cancel']}" outcome="view" styleClass="btn btn-primary">
                            <f:param name="id" value="#{voucherBean.id}"/>
                        </h:link>
                        <h:commandButton value="#{msg['btn-delete']}" action="#{voucherBean.delete}" styleClass="btn btn-primary"/>
                    </c:when>
                    <c:otherwise>
                        <h:link value="#{msg['btn-cancel']}" outcome="search" styleClass="btn btn-primary"/>
                    </c:otherwise>
                </c:choose>

            </div>
        </h:form>   
    </ui:define>                    
</ui:composition>

我查看了浏览器,它被编译为:

<select id="j_idt30:voucherBeanVoucherVeiculo" name="j_idt30:voucherBeanVoucherVeiculo" class="form-control" size="1">  <option value="" selected="selected"></option>
    <option value="61">1560</option>
    <option value="97">1870</option>
    ...............
</select>

我尝试更新此按钮以选择一个菜单:

<p:commandButton action="#{veiculoBean.updateModal()}" value="#{msg['btn-save']}" styleClass="btn btn-primary"  >
    <p:ajax update=":j_idt30:voucherBeanVoucherVeiculo"/>       
</p:commandButton> 

1 个答案:

答案 0 :(得分:2)

您的表单上有prependId=false。这被ajax调用忽略(根据规范)。所以删除它,给表单一个id并在更新中使用它。另请参阅UIForm with prependId="false" breaks <f:ajax render>