Actualisation / Validation d'un dialogue de création d'un objet
Bonjour,
J'ai une page qui affiche un tableau d'objets. Depuis ce tableau, j'ai un bouton qui ouvre un dialogue permettant de créer un nouvel objet.
Je rencontre quelques problèmes d'utilisation de mon dialogue.
Voici le dialogue en question (présent dans le même formulaire que le tableau qui fait appel à ce dialogue) :
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
|
<!-- Dialogue de création d'une facture -->
<p:dialog header="#{msg['NouvelleFactureProvisoire']}" widgetVar="createDlg"
resizable="false" id="createDlg" showEffect="fade" hideEffect="fade" >
<div align="center">
<p:panelGrid columns="2" styleClass="panelSansBordure">
<h:outputLabel for="mandat" value="@#{msg['Mandat']} : " styleClass="mandatory" />
<p:autoComplete id="mandat" value="#{gestionFactDebiteursProvisoireForm.mandat}"
completeMethod="#{gestionFactDebiteursProvisoireForm.completeMandat}" var="mandat"
itemLabel="#{mandat.numero}" itemValue="#{mandat}"
required="true" requiredMessage="Le mandat est obligatoire"
converter="MandatConverter" forceSelection="false" size="40" >
<p:ajax event="itemSelect" update="mandatMo, mandatObjet" />
<p:column>
<h:outputText value="#{mandat.numero}" />
</p:column>
<p:column>
<h:outputText value="#{mandat.listMandatIdentiteToString}" />
</p:column>
<p:column>
<h:outputText value="#{mandat.objet}" />
</p:column>
</p:autoComplete>
<h:outputText value="" />
<p:inputText id="mandatMo" value="#{gestionFactDebiteursProvisoireForm.mandat.listMandatIdentiteToString}"
size="40" disabled="true" >
<p:tooltip id="mandatmott" for="mandatMo" trackMouse="true"
value="#{saisirFactCreancierForm.selectedMandat.listMandatIdentiteToString}" />
</p:inputText>
<h:outputText value="" />
<p:inputText id="mandatObjet" value="#{gestionFactDebiteursProvisoireForm.mandat.objet}"
size="40" disabled="true" >
<p:tooltip id="mandatobjettt" for="mandatObjet" trackMouse="true"
value="#{saisirFactCreancierForm.selectedMandat.objet}" />
</p:inputText>
<h:outputLabel for="montantHt" value="#{msg['MontantHT']} (hono. et frais): " styleClass="mandatory" />
<h:inputText id="montantHt" value="#{gestionFactDebiteursProvisoireForm.montantHt}" >
<f:convertNumber pattern="#,##0.00" locale="fr_CH" />
</h:inputText>
<h:outputLabel for="remarque" value="#{msg['Description']} (2'000) : " />
<p:inputTextarea id="remarque" maxlength="2000" autoResize="false" styleClass="unresizable"
value="#{gestionFactDebiteursProvisoireForm.remarque}" rows="4" cols="37" />
<h:outputLabel for="papierEntete" value="#{msg['PapierEntete']} : " />
<p:selectOneMenu id="papierEntete" value="#{gestionFactDebiteursProvisoireForm.typePapierEnteteCi}"
style="width:220px" >
<f:selectItem itemLabel="" itemValue="#{null}" />
<f:selectItems value="#{gestionFactDebiteursProvisoireForm.listTypePapierEntete}" />
</p:selectOneMenu>
</p:panelGrid>
<h:panelGrid columns="1" >
<h:outputText value="Sous-traitants : " styleClass="formulaireTexteEvidence" />
<p:dataTable id="sousTraitantsTable"
value="#{gestionFactDebiteursProvisoireForm.listeSousTraitants}"
var="sousTraitant" widgetVar="sousTraitantsTable"
rowKey="#{sousTraitant.id}"
emptyMessage="Aucun sous-traitant défini"
sortMode="multiple" editable="true" editMode="cell"
scrollable="true" scrollHeight="140"
style="margin-bottom:10px; width:600px;" >
<f:facet name="header">
<h:panelGrid id="actionmain" columns="1" style="width:480px;" styleClass="panelSansBordure">
<p:column>
<p:commandLink id="createSTBtn" update="sousTraitantsTable" action="#{gestionFactDebiteursProvisoireForm.ajouterSousTraitant}"
styleClass="ui-icon ui-icon-action-ajouter" >
<p:tooltip id="ajouterlinktoolSTtip" for="createSTBtn" value="Ajouter un sous-traitant" />
</p:commandLink>
</p:column>
</h:panelGrid>
</f:facet>
<p:column headerText="#" style="width:10%" >
<h:panelGrid id="actions" columns="1" cellpadding="5" styleClass="panelSansBordure" >
<p:commandLink id="supprimerSt" onclick="PF('confDeleteDlg').show()"
styleClass="ui-icon ui-icon-action-supprimer" >
<f:setPropertyActionListener target="#{gestionFactDebiteursProvisoireForm.selectedFacture}" value="#{facture}"/>
<p:tooltip id="supprimersttooltip" for="supprimerSt" value="#{msg['Supprimer']}" />
</p:commandLink>
</h:panelGrid>
</p:column>
<p:column headerText="#{msg['Remarque']}" style="width:60%;" >
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{sousTraitant.sousTraitant}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{sousTraitant.sousTraitant}" size="50" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="#{msg['Montant']}" style="width:30%; text-align:right" >
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{sousTraitant.montant}" >
<f:convertNumber pattern="#,##0.00" locale="fr_CH" />
</h:outputText>
</f:facet>
<f:facet name="input">
<h:inputText value="#{sousTraitant.montant}" >
<f:convertNumber pattern="#,##0.00" locale="fr_CH" />
</h:inputText>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
</h:panelGrid>
<h:panelGrid columns="2" cellpadding="10">
<p:commandButton id="createButton" action="#{gestionFactDebiteursProvisoireForm.creerFacture}" oncomplete="PF('createDlg').hide()"
update=":gestionFactDebiteursProvisoireForm:factures, messages" process="@this" value="#{msg['Enregistrer']}" />
<p:commandButton id="cancelCreationButton" onclick="PF('createDlg').hide()" value="#{msg['Annuler']}"/>
</h:panelGrid>
</div>
</p:dialog> |
1. La validation ne fonctionne pas :
Le champ "mandat" est obligatoire mais si je ne renseigne rien et enregistre, ça passe (ça pète plus loin avec la contrainte "not null" de la BD)
2. Les champs ne sont pas réinitailisés
Si j'ouvre une 2ème fois pour dialogue, les champs sont remplis avec les valeurs de la dernière ouverture du dialogue.
Malgré la réinitialisation dans le managedBean
Code:
1 2 3 4 5
|
<p:commandLink id="createFactureBtn" update=":gestionFactDebiteursProvisoireForm:createDlg" oncomplete="PF('createDlg').show()"
styleClass="ui-icon ui-icon-action-ajouter" >
<p:tooltip id="ajouterlinktooltip" for="createFactureBtn" value="#{msg['AjouterUneFacture']}" />
</p:commandLink> |
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
|
public void creerFacture() {
FactureProvisoire facture = new FactureProvisoire();
facture.setSocieteLieu(selectedSocieteLieu);
facture.setDomaineCompetence(selectedDomaineCompetence);
facture.setDecompteAnnee(selectedAnnee);
facture.setDecompteTrimestre(selectedTrimestre);
if (isUserDirector()) {
facture.setViseeParDirecteur(true);
}
facture.setMandat(getMandat());
facture.setMontantHT(getMontantHt());
facture.setRemarque(getRemarque());
facture.setTypePapierEnteteCi(getTypePapierEnteteCi());
calculerMontantFacture(facture);
if (CollectionUtils.isNotEmpty(listeSousTraitants)) {
for (FactureProvisoireSousTraitant st : listeSousTraitants) {
st.setFactureProvisoire(facture);
facture.addSousTraitant(st);
}
}
m_financeService.saveFactureProvisoire(facture);
listFacture.add(facture);
resetDialogFields();
}
private void resetDialogFields() {
mandat = null;
montantHt = 0.0;
remarque = null;
typePapierEnteteCi = null;
listeSousTraitants.clear();
} |
3. Seul la valeur du mandat est récupérée dans le bean lors de l'enregistrement
Lorsque je clique sur enregistrer, dans mon bean, mes propriétés ne contiennent pas les valeurs saisies dans le dialogue, hormis la propriété "mandat"
4. Dans le tableau affiché dans le dialogue, l'action d'ajout d'un élément dans le tableau ne met pas à jour le tableau
L'action créé un nouvel élément et l'ajoute à la liste affichée dans le tableau, mais aucune ligne ne s'affiche dans le tableau
Bref, mon dialogue est loin de fonctionner comme je le souhaiterais.
Qqun peut-il m'aider et me guider pour résoudre ces petits problèmes ?
Merci d'avance pour votre aide