Bonjour,
j'ai un certain nombre de champ dans une boite de dialogue (qui est elle même dans un form) et un bouton de recherche. Parmi ces champ j'ai un champ autocomplete avec un validateur custom (voir ci dessous)
Mon validateur est decrit ci dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <p:panel id="#{widgetVar}Panel" header="#{msgWs['recherche.panel.title']}" styleClass="width-max inner-panel"> <p:selectOneRadio id="#{id}depVilleRadioButton" value="#{rechercheReferencesController.rechercheReferenceHelpers[key].choixDepartement}" layout="custom"> <f:selectItem itemLabel="" itemValue="true" /> <f:selectItem itemLabel="" itemValue="false" /> <p:ajax event="change" update="#{id}Recherche #{widgetVar}Panel" listener="#{rechercheReferencesController.rechercheReferenceHelpers[key].toggleSelectDepville}" resetValues="true" oncomplete="updateAutocompleteRechWs()"/> </p:selectOneRadio> <p:remoteCommand name="updateAutocompleteRechWs" update="#{widgetVar}Panel"/> <p:panelGrid columns="1" styleClass="inner-table"> <p:panelGrid columns="5" styleClass="inner-table"> <p:radioButton id="#{id}depVilRadButOpt1" for="#{id}depVilleRadioButton" itemIndex="0" /> <p:outputLabel for="#{id}numeroDepartement" value="#{msgWs['recherche.numeroDepartement']}" styleClass="#{!rechercheReferencesController.rechercheReferenceHelpers[key].choixDepartement ? '' : 'obligatoire' }"/> <p:autoComplete id="#{id}numeroDepartement" value="#{rechercheReferencesController.rechercheReferenceHelpers[key].departementRecherche}" rendered="#{empty rendered ? true : rendered}" completeMethod="#{departementHelper.completeDepartement}" forceSelection="true" minQueryLength="1" maxResults="20" var="departement" itemLabel="#{departement.shortString}" itemValue="#{departement}" converter="#{departementConverter}" queryDelay="300" size="40" disabled="#{!rechercheReferencesController.rechercheReferenceHelpers[key].choixDepartement}" > <!-- validator="#{rechercheReferencesController.rechercheReferenceHelpers[key].validateDepartementRequired}"> --> <f:validator validatorId="departementValidator" /> <p:ajax event="itemSelect" update="#{id}Recherche #{widgetVar}Panel" process="#{widgetVar}Panel" /> </p:autoComplete> <!-- required="#{!rechercheReferencesController.rechercheReferenceHelpers[key].choixDepartement ? false : empty rechercheReferencesController.rechercheReferenceHelpers[key].listeDepartements}" --> <!-- requiredMessage="#{msgWs['recherche.departement.required']}" --> <p:panelGrid columns="1" styleClass="inner-table" style="text-align: center;"> <p:commandButton value="#{msg['ajouter']}" action="#{rechercheReferencesController.rechercheReferenceHelpers[key].ajouterDepartement}" icon="ui-icon-seek-next" iconPos="right" update="#{id}Recherche #{widgetVar}Panel" disabled="#{!rechercheReferencesController.rechercheReferenceHelpers[key].choixDepartement}" style="width: 100px;"> </p:commandButton> <p:commandButton value="#{msg['supprimer']}" action="#{rechercheReferencesController.rechercheReferenceHelpers[key].supprimerDepartements}" icon="ui-icon-seek-prev" iconPos="right" update="#{id}Recherche #{widgetVar}Panel" disabled="#{!rechercheReferencesController.rechercheReferenceHelpers[key].choixDepartement}" style="width: 100px;"> </p:commandButton> </p:panelGrid>
Or mon validateur n'est appelè que si je selectionne un departement dans mon champ autocomplete. Il n'est pas appelè quand je clique sur mon bouton de recherche. Comment faire pour qu'il soit appelè quand je clique sur mon bouton de recherche. Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package fr.appli.synotex.validation; import java.util.ResourceBundle; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.FacesValidator; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; import fr.appli.synotex.domain.Departement; import fr.appli.synotex.service.ResourceBundleService; import fr.appli.synotex.service.ResourceBundleService.Bundle; @FacesValidator(value = "departementValidator") public class DepartementValidator implements Validator { @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { Boolean valueIsNotNullDepartement = value != null && value instanceof Departement; ResourceBundle bundle = ResourceBundleService.getBundle(Bundle.WS); if (!valueIsNotNullDepartement) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, bundle.getString("recherche.departement.required"), null)); } } }
Partager