2017-10-09 2 views
1

J'ai un problème pour valider plus d'un composant h: form ... Je dois valider ces 2 composants inputtext mais si je le fais comme ceci:primefaces forment la validation multiple

<p:inputText id="actionNameInput" 
       title="TO DO" 
       value="#{repositoryBean.newActionName}" 
       label="Action name" 
       required="true" 
       requiredMessage="Action name is missing."> 
     <f:validator validatorId="inputTextValidator"/> 
     <f:attribute name="input1" value="Action name" /> 
    </p:inputText> 

    <p:inputText id="identifierInput" 
       title="TO DO" 
       value="#{repositoryBean.newActionRegex}" 
       label="Identifier" 
       required="true" 
       requiredMessage="Identifier is missing."> 
     <f:validator validatorId="inputTextValidator"/> 
     <f:attribute name="input1" value="Identifier" /> 
    </p:inputText> 

est validateur ici :

@FacesValidator(value = "inputTextValidator") 

public class AddActionValidatorInputText implements Validator{ 
    @Override 
    public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException { 

     if(((String)o).length() < 3){ 
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, 
        uiComponent.getAttributes().get("input1")+" should be longer than 3characters.", null); 
      FacesContext.getCurrentInstance().addMessage(null, message); 
      throw new ValidatorException(message); 
     } 
    } 
} 

il ne validera la première inputText ... Je tryied this, mais je ne peux pas obtenir des valeurs de composants (toujours null) ... J'ai lu smthing sur les coutures faces, mais si je l'ai appliqué, il y avait une plus grosse erreur (comme il faut de plus en plus de dépendances ...). Je ne veux pas le valider dans ma classe de haricots.

+0

Fonctionne-t-il avec un 'h: inputText'? – Kukeltje

Répondre

0

Here vous pouvez trouver des solutions possibles au problème. Et pour rendre les valeurs non NULL, utilisez valueChangeListener attribut comme ceci:

<p:inputText id="actionNameInput" 
      title="TO DO" 
      value="#{repositoryBean.newActionName}" 
      label="Action name" 
      required="true" 
      requiredMessage="Action name is missing." 
      valueChangeListener="#{repositoryBean.onNewActionNameChange}"> 
    <f:validator validatorId="inputTextValidator"/> 
    <f:attribute name="input1" value="Action name" /> 
</p:inputText> 

et haricot dos:

public void onNewActionNameChange(ValueChangeEvent event) { 
    setNewActionName(event.getNewValue().toString()); 
} 

This article au sujet du cycle de vie JSF peut vous aider à comprendre ce qui se passe à l'intérieur.