Primefaces DefaultCommand按钮根据区域切换

时间:2016-11-23 14:37:57

标签: primefaces

正如你所看到我首先寻找一个拥有第一个commandButton的人,然后我在数据表中选择一个人,我有第二个commandButton,我想在我选择一个人之后在button2上切换defaultCommand,我怎么能做到这一点?

<h:form id="form"
        rendered="#{security.asRole('ADMIN') or security.asRole('GESTIONNAIRE')}">
        <f:event type="preRenderView" listener="#{paieAgentView.init()}" />

        <p:fieldset legend="Recherche de l'agent">
            <p:panelGrid columns="2">
                <p:panelGrid columns="2" id="pgRechercheAgent">
                    <h:outputLabel value="Matricule :" />
                    <p:inputText id="matricule"
                        value="#{paieAgentView.agentSearched.matricule}">
                        <p:ajax process="matricule" partialSubmit="true" event="keyup" />


                    <h:commandButton id="boutonLigneAgent"
                        action="#{paieAgentView.searchLigneAgent()}"
                        value="Rechercher les agents" icon="ui-icon-search"
                        update="listAgents" immediate="true"  >
                        <f:ajax render="@form" execute="@this" />
                    </h:commandButton>


                    <br />
                </p:panelGrid>

                <p:dataTable id="listAgents" var="agt"
                    value="#{paieAgentView.listLigneAgent}"
                    selection="#{paieAgentView.agentSelected}"
                    rowKey="#{agt.matricule}" style="margin-bottom:0"
                    selectionMode="single" scrollRows="20" scrollable="true"
                    liveScroll="true" scrollHeight="250">

                    <p:ajax event="rowSelect" update=":form:pgRechercheContrats" />

                    <p:column headerText="Matricule">
                        <h:outputText value="#{agt.matricule}" />
                    </p:column>
                    <p:column headerText="Nom">
                        <h:outputText value="#{agt.nomPat} #{agt.prenom}" />
                    </p:column>

                </p:dataTable>

            </p:panelGrid>

            <p:defaultCommand target="boutonLigneAgent" />
        </p:fieldset>
        <p:fieldset legend="Critères de recherche">
            <p:panelGrid columns="3" id="pgRechercheContrats">

                <h:panelGrid columns="1" style="margin-bottom:10px" cellpadding="5">
                    <p:outputLabel for="typePeriode" value="Période de paie:" />
                    <p:selectOneRadio id="typePeriode"
                        value="#{paieAgentView.typePeriode}">
                        <f:selectItem itemLabel="Période de paie" itemValue="paie" />
                        <f:selectItem itemLabel="Période d'origine" itemValue="origine" />
                    </p:selectOneRadio>
                </h:panelGrid>


                <h:panelGrid columns="2" id="pgCalendar">
                    <h:outputLabel value="Date Debut : " for="calendrierDateDebut" />
                    <p:calendar id="calendrierDateDebut"
                        value="#{paieAgentView.dateDebut}" pattern="yyyy-MM-dd"
                        effect="slideDown" navigator="true" mode="inline"
                        locale="#{sessionControleur.langue}" style="moisAnSeul" />
                    <h:outputLabel value="Date fin : "
                        for="calendrierDateFin" />
                    <p:calendar id="calendrierDateFin"
                        value="#{paieAgentView.dateFin}" pattern="yyyy-MM-dd"
                        effect="slideDown" navigator="true" mode="inline" lang="fr"
                        locale="fr" style="moisAnSeul" /> 
                </h:panelGrid>


                <p:selectManyCheckbox id="gridTypesPaie"
                    value="#{paieAgentView.selectedTypesPaie}" columns="1"
                    layout="pageDirection">
                    <f:selectItems value="#{paieAgentView.typesPaie}" var="type"
                        itemLabel="#{type.label}" itemValue="#{type.value}" />
                </p:selectManyCheckbox>

            </p:panelGrid>
        </p:fieldset>

        <p:commandButton process="pgRechercheContrats"
            icon="ui-icon-file-pdf" value="Editer les fiches de paie"
            action="#{paieAgentView.printPaieAgent()}" update="@form"
            escape="false" ajax="false" 
            onclick="regenererCal();this.form.target='_blank'" />

    </h:form>

1 个答案:

答案 0 :(得分:1)

使用渲染属性制作2个defaultCommands。呈现应该检查是否选择了人,并且调用的操作必须是适当的。因为每次更改时都会更新整个表单,这应该可以正常工作

<p:defaultCommand target="boutonLigneAgent" rendered="#{personIsSelected()}"/>
<p:defaultCommand target="pgRechercheContrats" rendered="#{personIsNotSelected()}"/>