2016-08-09 1 views
2

Je veux traiter la valeur d'une inputsecret en utilisant la fonctionnalité onblur mais j'obtenir l'erreur Impossible invoquer la méthode getOnblurSpringBoot & Bootsfaces: Impossible de ne pas invoquer la méthode getOnblur

<b:column span="3"> 
    <p:outputLabel value="#{msg.confirmPassword}" /> 
    <b:inputSecret value="#{workerDetail.confirmPassword}" onblur="#{workerDetail.checkPassword}"/> 
</b:column> 

Ceci est la méthode sur le support:

public void checkPassword(AjaxBehaviorEvent event) 
{ 
    System.out.println(confirmPassword); 
} 

Comment puis-je résoudre?

Répondre

1

BootsFaces adopte une approche légèrement différente de AJAX que les autres frameworks JSF. L'idée est simplement d'utiliser les fonctions de rappel JavaScript pour appeler une méthode dans un bean backend Java. Cependant, nous voulons également préserver la compatibilité avec d'autres frameworks JSF, donc nous ne pourrions pas vous suivre, aussi tentant que cela puisse être. Au lieu de cela, nous avons décidé de précéder l'appel AJAX par un préfixe ajax:. Il est suivi d'une expression EL qui définit également la liste des paramètres. En d'autres termes: autre que JSF standard, BootsFaces ne transmet pas le paramètre d'événement.

TL; DR: changer simplement votre onblur attribut comme ceci:

<b:column span="3"> 
    <p:outputLabel value="#{msg.confirmPassword}" /> 
    <b:inputSecret value="#{workerDetail.confirmPassword}" onblur="ajax:workerDetail.checkPassword()"/> 
</b:column> 

S'il vous plaît noter les supports suivants checkPassword. C'est une expression EL qui est exécutée lorsque l'événement a été déclenché et envoyé au backend Java.

La méthode de backing bean résultant n'a pas besoin du paramètre d'événement:

public void checkPassword() 
{ 
    System.out.println(confirmPassword); 
} 

La différence à votre approche est que votre expression EL a été évaluée lorsque la page est rendu - ce qui est un peu au début.

+0

Je suis vos instructions mais la méthode checkPassword n'est jamais appelée! – xc93hil

+0

Il est difficile de localiser votre problème sans savoir exactement ce que vous avez fait. Alors je vous suggère de partager un petit reproducteur de votre problème sur GitHut. Dans la plupart des cas, cela nous permet de trouver rapidement l'erreur. Merci d'avance, Stephan –

+0

Maintenant ça marche! La méthode checkPassword est appelée régulièrement. J'ai inséré dans cette méthode aussi un message Faces: FacesContext.getCurrentInstance(). AddMessage (null, nouveau FacesMessage (FacesMessage.SEVERITY_WARN, titre, message)); mais tout grognement est montré. Voici le repo GitHub: https://github.com/cler27/TestWeb – xc93hil