paramètre entre xhtml et page jsf
Bonjour,
Je débute en jsf et donc en interface graphique via prime faces (xhtml).
J'arrive à mes fins mais petit à petit et depuis quelques jours je sèche sur internet à la recherche d'une solution à mon interrogation.
Comment passer un paramètre d'une page XHTML à une page JSF.
Je m'explique :
Ma page XHTML affiche une liste de cycles de formation (statut et millésime), un statut peut être créé, supprimé, fermé, ouvert, archivé...
Lorsqu'on clique sur le cycle dont on veut voir le détail, une autre fenetre s'ouvre pour afficher des boutons que je veux griser en fonction du statut initial.
Ex : cycle n°1 statut à C (créé), je fais détail et je voudrai griser les boutons fermer, archiver et ne laisser que ouvrir et supprimer.
Si je change de cycle (ex cycle n°2) statut à F (fermé), je veux pouvoir griser alors les boutons supprimer, et archiver, et ne laisser accessible que les boutons ouvrir et archiver.
Et ce suivant chaque règle de gestion définie.
En clair, je passe par une méthode dans mon bean qui s'appelle affichage bouton et qui en fonction de mon statut doit permettre l'affichage à jour des bons boutons.
voilà une copie du code, alors si l'un de vous se sent l'ame d'un bon samaritain....
merci d'avance pour les tuyaux.
gérerCycle.xhtml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| <ui:define name="content">
<h:form id="form">
<p:fieldset legend="Gestion des cycles">
<p:toolbar>
<p:toolbarGroup align="left" style="height:30px">
<p:commandButton id="nouveauButton" oncomplete="nouveauCycle.show()" ajax="true" styleClass="styleSagaieButton" icon="icone-button-nouveau" value="#{msg['btn.new']}"/>
<p:commandButton id="exportExcel" ajax="false" styleClass="styleSagaieButton" icon="icone-button-excel" value="Export Excel">
<p:dataExporter type="xls" target="cycles"
fileName="ListeCycle" pageOnly="false" />
</p:commandButton>
</p:toolbarGroup>
</p:toolbar>
<p:dataTable id="cycles" var="cycle"
value="#{gererCycleMng.cycleList}" filteredValue="#{gererCycleMng.filtrecycleList}"
paginator="true" paginatorPosition="bottom" scrollHeight="500" scrollable="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="10,50,100"
currentPageReportTemplate=" ({startRecord}-{endRecord} sur {totalRecords})"
emptyMessage="Aucun cycle à afficher"
rowIndexVar="rowIndex"
>
<p:column width="15" exportable="false" style="Background-color:#188DF3">
#{rowIndex+1}
</p:column>
<p:column exportable="false" width="20">
<p:commandButton id="selectButton" styleClass="iconDatatable"
icon="ui-icon-search" update=":detail:cycleDetail" action="#{gererCycleMng.affichageBouton()}"
oncomplete="detailCycle.show()" ajax="true">
<f:setPropertyActionListener value="#{cycle}"
target="#{gererCycleMng.cycleIHM}" />
<f:param name="statutCycleEnCours" value="{#cycle.statut}"/>
</p:commandButton>
<p:tooltip for="selectButton" value="Cliquez pour afficher le détail et modifier" showEffect="fade" hideEffect="fade" />
</p:column>
<p:column headerText="#{msg['statut.libelle']}" width="125" sortBy="#{cycle.statut}"
filterBy="#{cycle.statut}">
<h:outputText value="#{cycle.statut}" />
</p:column>
<p:column headerText="#{msg['millesime.libelle']}" width="125"
filterBy="#{cycle.millesimeDebut}" sortBy="#{cycle.millesimeDebut}" >
<h:outputText value="#{cycle.millesimeDebut}" />
</p:column>
</p:dataTable>
</p:fieldset>
</h:form>
<p:dialog widgetVar="nouveauCycle" modal="true" header="Nouveau Cycle" appendToBody="true"
closable="false" resizable="false">
<h:form id="cycle">
<p:panel id="detailCycle" >
<h:panelGrid columns="2" style="border-style:none" cellspacing="10" columnClasses="styleSagaieLibelle,styleSagaieComposant">
<p:outputLabel for="court" styleClass="labelSagaie" value="#{msg['statut.libelle']} en création" />
<h:inputText id="court" value="#{gererCycleMng.cycleIHM.statut}" disabled="true" ></h:inputText>
<p:outputLabel for="long" styleClass="labelSagaie" value="#{msg['millesime.libelle']} *" />
<h:inputText id="long" value="#{gererCycleMng.cycleIHM.millesimeDebut}" size="50"></h:inputText>
</h:panelGrid>
</p:panel>
<br/>
<h:panelGroup style="display:block; text-align:right;">
<p:commandButton id="OkButton" styleClass="styleSagaieButton" icon="icone-button-valider" value="#{msg['btn.submit']}" update="detailCycle,:form:cycles" disabled="false"
actionListener="#{gererCycleMng.creerCycleAnnuel()}"
oncomplete="nouveauCycle.hide()"/>
<p:commandButton id="AnnulerButton" oncomplete="nouveauCycle.hide()" actionListener="#{gererCycleMng.nettoyer()}" styleClass="styleSagaieButton" icon="icone-button-cancel" value="#{msg['btn.cancel']}" update="detailCycle "/>
</h:panelGroup>
</h:form>
</p:dialog>
<p:dialog id="bla" header="Gestion du cycle" widgetVar="detailCycle" modal="true" appendToBody="true" height="300" width="620"
closable="false" resizable="false" >
<h:form id="detail">
<p:panel id="cycleDetail" style="height:200px" >
<h:panelGrid columns="2" style="border-style:none" cellspacing="10" columnClasses="styleSagaieLibelle,styleSagaieComposant">
<h:outputLabel for="statut" value="#{msg['statut.libelle']}" />
<h:inputText id="statut" value="#{gererCycleMng.cycleIHM.statut}" disabled="true"></h:inputText>
<h:outputLabel for="millesime" value="#{msg['millesime.libelle']}" />
<h:inputText id="millesime" value="#{gererCycleMng.cycleIHM.millesimeDebut}" disabled="true"></h:inputText>
</h:panelGrid>
<br/>
<h:outputLabel value="#{msg['choix.libelle']}" />
<br/>
<br/>
<h:panelGrid columns="5" style="border-style:none" cellspacing="10" >
<p:commandButton id="DeleteStatut" value="#{msg['btn.delete']}" styleClass="styleSagaieButton" icon="icone-button-supprimer" actionListener="#{gererCycleMng.supprimerCycle()}" disabled="#{gererCycleMng.supprimer}" onclick="detailCycle.hide()" update=":form:cycles">
</p:commandButton>
<p:commandButton id="OuvrirStatut" value="#{msg['btn.ouvrir']}" styleClass="styleSagaieButton" icon="icone-button-ouvrir" actionListener="#{gererCycleMng.modifierCycle('O')}" disabled="#{gererCycleMng.ouvrir}" onclick="detailCycle.hide()" update=":form:cycles">
</p:commandButton>
<p:commandButton id="FermerStatut" value="#{msg['btn.close']}" styleClass="styleSagaieButton" icon="icone-button-cancel" actionListener="#{gererCycleMng.modifierCycle('F')}" disabled="#{gererCycleMng.fermer}" onclick="detailCycle.hide()" update=":form:cycles">
</p:commandButton>
<p:commandButton id="ArchiverStatut" value="#{msg['btn.archiver']}" styleClass="styleSagaieButton" icon="icone-button-archiver" actionListener="#{gererCycleMng.modifierCycle('A')}" disabled="#{gererCycleMng.archiver}" onclick="detailCycle.hide()" update=":form:cycles">
</p:commandButton>
<p:commandButton id="DesarchiverStatut" value="#{msg['btn.desarchiver']}" styleClass="styleSagaieButton" icon="icone-button-desarchiver" actionListener="#{gererCycleMng.modifierCycle('D')}" disabled="#{gererCycleMng.desarchiver}" onclick="detailCycle.hide()" update=":form:cycles">
</p:commandButton>
</h:panelGrid>
</p:panel>
<br/>
<h:panelGroup style="display:block; text-align:right;">
<br/>
<p:commandButton id="Annuler" value="#{msg['btn.cancel']}" styleClass="styleSagaieButton" icon="icone-button-cancel" actionListener="#{gererCycleMng.nettoyer()}" oncomplete="detailCycle.hide();">
</p:commandButton>
</h:panelGroup>
</h:form>
</p:dialog>
</ui:define>
</ui:composition> |
et GererCycleMng :
entre autre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| public String getStatutParam (FacesContext fc){
Map<String,String> param = fc.getExternalContext().getRequestParameterMap();
return param.get("monParamStatut");
}
public void affichageBouton(){
FacesContext fc = FacesContext.getCurrentInstance();
this.monParamStatut = getStatutParam(fc);
//switch (cycleIHM.getStatut()) {
switch (monParamStatut)
{
case "C":
// le cycle annuel existe déjà en base de données et que son statut a pour valeur "C",
// l'aiguillage doit être choisi entre les valeurs "S" ou "O" ;
supprimer = false;
ouvrir = false;
fermer = true;
archiver= true;
desarchiver = true;
break;
case "O":
// le cycle annuel existe déjà en base de données et que son statut a pour valeur "O",
// l'aiguillage doit être choisi entre les valeurs "S" ou "F" ;
supprimer = false;
ouvrir = true;
fermer = false;
archiver= true;
desarchiver = true;
break;
case "F":
// le cycle annuel existe déjà en base de données et que son statut a pour valeur "F",
// l'aiguillage doit être choisi entre les valeurs "O" ou "A" ;
supprimer = true;
ouvrir = false;
fermer = true;
archiver= false;
desarchiver = true;
break;
case "A":
// le cycle annuel existe déjà en base de données et que son statut a pour valeur "A",
// l'aiguillage ne peut avoir que la valeur "D".
supprimer = true;
ouvrir = true;
fermer = true;
archiver= true;
desarchiver = false;
break;
case "D":
//le cycle est désarchivé
supprimer = true;
ouvrir = true;
fermer = false;
archiver= false;
desarchiver = true;
break;
default:
break;
}
} |
merci :cry:merci merci