2009-12-10 6 views
1

J'utilise la balise MyFaces 1.1 ValidateRegExpr pour valider l'entrée d'un utilisateur par rapport à une expression régulière.JavaServer Pages: Comment obtenir une valeur dans un attribut à partir d'un code sans langage d'expression?

Je souhaite pouvoir attribuer dynamiquement le modèle regex via du code, mais selon le code http://myfaces.apache.org/commons11/myfaces-validators11/tagdoc/mcv_validateRegExpr.html, le modèle d'attribut ne prend pas en charge le langage d'expression.

Le balisage dans mon fichier JSP est censé ressembler à ceci:

<tc:in value="${dataBean.currentBean.field}"> 
     <mcv:validateRegExpr 
      pattern="${dataBean.currentBean.validationRegEx}" 
      message="${dataBean.currentBean.validationMessage" /> 
</tc:in> 

Quelle est la meilleure façon d'attribuer dynamiquement les valeurs d'attribut à jsp contrôles qui ne prennent pas en charge EL?

Répondre

1

Implémentez un javax.faces.validator.Validator et enregistrez-le en tant que <validator> dans faces-config.xml. Dans une vraie classe Java, vous avez la liberté d'écrire du code Java normal :)

exemple de base coup d'envoi:

public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { 
    SomeBean someBean = SomeFacesUtil.evaluateExpressionGet("someBean", SomeBean.class); 
    if (!value.toString().matches(someBean.getPattern())) { 
     throw new ValidatorException(new FacesMessage(someBean.getMessage())); 
    } 
}