2010-07-14 2 views
2

Les zones de champ de saisie sont remplies avec #{ad.userid} comme cela dans toutes les pages. Et même si, lorsque j'entre des valeurs valides, elles donnent des valeurs null dans le bean géré lorsqu'elles sont accédées dans la méthode d'action. Comment cela peut-il arriver et comment puis-je résoudre cela?Les valeurs du champ de saisie sont null dans la méthode d'action du bean

+0

s'il vous plaît prenez votre temps pour donner les détails nécessaires et la structure de votre question d'une manière plus lisible. – Bozho

+0

Indice: Ne supposez pas que les personnes qui ont répondu à votre question précédente verront également celle-ci. ;-) – Tomalak

Répondre

1

Ceci peut être dû à avoir inutilement immediate="true" dans h:commandButton, ou en utilisant rendered, disabled ou readonly attributs dans les champs d'entrée (ou l'un de ses composants parents) qui sont fonction d'une demande scope bean qui ne sont pas correctement conservée dans la demande ultérieure. Il y a plus de causes possibles, mais c'est trop à mentionner. Les mentionnés ci-dessus sont au moins les causes les plus fréquentes chez les débutants.

Pour en savoir plus sur le cycle de vie JSF afin que vous puissiez obtenir une meilleure compréhension de ce qui est tout ce qui se passe « sous le capot » de sorte que vous pouvez clouer mieux vers le bas vous, consultez cet article: Debug JSF lifecycle

+0

En effet, j'ai utilisé "disabled" et l'orchestration entre un ancien sur un événement blur ajax et un dernier surclick commandbutton ne fonctionnait pas correctement. Je me suis débarrassé des handicapés et cela a fonctionné comme d'habitude (décrit ici: http://stackoverflow.com/questions/40596558/primefaces-6-0-inputtext-ajax-event-commandbutton-event-yields-null-bean-fie) . –

0

je faisais face quelque chose comme ça et il a été résolu quand j'ai utilisé

<p:ajax event="change" update="componenet_ID" process="@form" listener="#{ManagedBeen.action}" /> 
1

J'ai eu le même problème. Dans mon cas, j'avais ces importations en place dans mon haricot:

import javax.faces.bean.RequestScoped; 
import javax.inject.Named; 

@Named(value = "fooBean") 
@RequestScoped 
public class FooBean { 
... 
} 

au lieu de ceux-ci:

import javax.enterprise.context.RequestScoped; 
import javax.inject.Named; 

Voir aussi: https://stackoverflow.com/a/9921449/4402950

Questions connexes