2010-09-11 6 views
0

Je souhaite obtenir une valeur JavaScript dans un bean backing JSF. Je l'ai essayé ce qui suit:Obtenir la valeur cachée définie par JavaScript dans le bean backstable JSF

JSF:

<h:inputHidden id="fileName" value="#{TestBean.fileName}" /> 
<a4j:commandButton id="button" value="Send Mail" action="#{TestBean.send}" onclick="onCall()"/> 

Bean:

public String send() { 
    System.out.println("File Name: " + fileName); 
} 

JS:

function onCall(){ 
    //value changes dynamically everytime this function is called 
    document.getElementById('case:fileName').value = '123'; 
} 

problème avec ce code est: pour la première fois il est aller chercher la chaîne vide dans le backing bean à partir de la deuxième fois, il obtient la valeur précédemment générée en t Il fonction de script Java.

Où est-ce que je me suis trompé et comment puis-je le résoudre?

+0

Cette alternative vous convient-elle? 'value =" # {fileName} "' définit la propriété bean de la valeur utilise 'setPropertyActionListener' ou ajoute le paramètre comme argument à votre méthode' # {send (fileName)}? – djmj

Répondre

1

J'ai juste essayé ce code et cela fonctionne très bien sur ma machine. Comme je peux voir le code n'est pas exactement copié-collé, parce qu'il y a une erreur dans la méthode send(). Il déclare le type de retour String, mais il ne renvoie rien.

Peut-être que votre erreur est quelque part dans la partie du code que vous n'avez pas copiée ici.

+0

Je pense que c'est un hareng rouge. Au moins, cela ne correspond pas à la description du problème: "chaque clic donne la valeur précédente" :) Si la valeur de retour était vraiment manquante, le code n'aurait tout simplement pas été compilé. En passant, j'ai vu plus de problèmes avec 'a4j: commandButton' comme ça, voir aussi [ce sujet] (http://forums.sun.com/thread.jspa?threadID=5390192). Je ne serai pas surpris si c'est encore le cas. Je mettrais à jour RichFaces ou le signalerais. – BalusC

Questions connexes