Bonjour,
J'ai construit un composite perso et je souhaiterai formater une valeur d'un input text suite à la validation.
La validation fonctionne, et suite à celle ci, je voudrai insérer des espaces entre des série de chiffres. une idée sur comment formatter ma valeur?
j'ai pensé effectué le formattage dans le validator et l'affectué dans le champ en le récupérant mais ceci ne fonctionne pas.
le validator
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 <!-- INTERFACE du composant de gestion des numéros SIREN --> <composite:interface componentType="sirenComposant"> <composite:attribute name="libelleLabel" type="java.lang.String" required="true" /> <composite:attribute name="idComposant" type="java.lang.String" required="true" /> <composite:attribute name="value" required="true" /> <composite:attribute name="disabled" type="java.lang.Boolean" required="false" default="false" /> <composite:attribute name="styleLabel" type="java.lang.String" required="false" /> <composite:attribute name="styleZoneSaisie" type="java.lang.String" required="false" /> </composite:interface> <!-- IMPLEMENTATION du composant permettant de gérer l'affichage et la validation du numéro SIREN --> <composite:implementation> <p:outputLabel value="#{cc.attrs.libelleLabel}" for="#{cc.attrs.idComposant}" styleClass="#{cc.attrs.styleLabel}" /> <p:inputText id="#{cc.attrs.idComposant}" label="#{cc.attrs.libelleLabel}" value="#{cc.attrs.value}" styleClass="#{cc.attrs.styleZoneSaisie}" size="11" maxlength="11" disabled="#{cc.attrs.disabled}"> <f:validator validatorId="sirenValidator" for="#{cc.attrs.idComposant}"/> <p:ajax event="change" update="#{cc.attrs.idComposant}" /> </p:inputText> <pe:keyFilter for="#{cc.attrs.idComposant}" mask="num"/> </composite:implementation> </ui:component>
merci 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
30
31
32
33
34
35
36
37
38
39 public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { String sirenSaisi = (String) value; if (StringUtils.isNotBlank(sirenSaisi)) { // -- 1. Le numéro SIREN doit être composé de 8 chiffres + 1 chiffre de contrôle // Suppression des espaces pour vérifier la chaîne saisie String sirenSaisiSansEspace = StringUtils.deleteWhitespace(sirenSaisi); if (sirenSaisiSansEspace.chars().count() != 9) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "SIREN - Longueur invalide : Le numéro SIREN doit être composé de 9 chiffres", "Le numéro SIREN doit être composé de 9 chiffres")); } else if (!StringUtils.isNumeric(sirenSaisiSansEspace)) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "SIREN - Format invalide : Le numéro SIREN doit être composé de 9 chiffres", "Le numéro SIREN doit être composé uniquement de chiffres")); } // -- 2. Vérification de l'exactitude du N°SIREN if (!estNumeroSirenValide(sirenSaisiSansEspace)) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "SIREN - Numéro saisi inexact : corrigez votre saisie", "Le numéro SIREN doit être composé de 9 chiffres qui répondent à la règle de contrôle d'un SIREN")); } //---------------essai et test InputText inputText = (InputText) FacesContext.getCurrentInstance().getViewRoot().findComponent(component.getClientId()); value = sirenSaisi.substring(0, 3) + StringUtils.SPACE + sirenSaisi.substring(3, 6) + StringUtils.SPACE + sirenSaisi.substring(6, sirenSaisi.length()); inputText.setValue(value); inputText.setSubmittedValue(value); inputText.setLocalValueSet(true); RequestContext.getCurrentInstance().execute(component.getClientId() + ".value(" + value + ");"); RequestContext.getCurrentInstance().update(component.getClientId()); //------------------------------ } }
Partager