IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

nullpointerexception - <p:ajax> avec @ViewScoped


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut nullpointerexception - <p:ajax> avec @ViewScoped
    Salut tout le monde,

    je fais face à un problème que je n'arrive pas à résoudre. Le voici :

    J'affiche, en fonction d'un selectOneRadio différents inputext permettant de renseigner un critère spécifique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <h:form id="form_principal">
    	<p:selectOneRadio id="options" value="#{rechercheBean.choix}">
    		<f:selectItem itemLabel="Critere 1" itemValue="c1" />
    		<f:selectItem itemLabel="Critere 2" itemValue="c2" />
    		<p:ajax update=":form_principal:critere" />
    	</p:selectOneRadio>
     
    	<h:panelGrid columns="1" id="critere">
    		<c:choose>
    			<c:when test="#{monBean.choix eq 'c1'}">
    				<h:outputText value="Critere 1 :" />
    				<p:inputText id="cr1" value="#{rechercheBean.critere1}" />
    			</c:when>
    			<c:when test="#{monBean.choix eq 'c2'}">
    				<h:outputText value="Critere 2 :" />
    				<p:inputText id="cr2" value="#{rechercheBean.critere2}" />
    			</c:when>
    		</c:choose>
    	</h:panelGrid>
    	<h:commandButton value="Ajouter critere" actionListener="#{monBean.ajouter}"/>
    </h:form>
    Coté ManagedBean, dans ma méthode "ajouter", je vais effectuer un traitement spécifique suivant le critère choisit.

    Ce que j'ai mis en place marche parfaitement lorsque mon managedBean est en @SessionScope.
    Je voudrais le passer en @ViewScoped mais lorsque je clique sur le bouton pour ajouter le critère, le critère est null lors du passage dans la méthode "Ajouter".

    Après différents tests, c'est le composant <p:ajax> qui pose problème car sans celui-ci, je retrouve bien mon critère coté managedBean. Cependant, j'ai besoin de ce composant pour pouvoir "switcher" entre mes inputexts.

    Comment puis-je faire pour régler ce problème ? Je tourne en rond depuis un bon moment

    merci par avance

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    peux-tu commencer par remplacer:
    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:ajax update=":form_principal:critere" />
    par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p:ajax render="critere" />
    ensuite peux-tu envoyer l´entete de tes declarations de ta page xhtml?

  3. #3
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut
    En effectuant ce changement, ça ne switch plus entre les différents inputext de mes critères.

    Voilà l'entête de mes fichiers xhtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <html xmlns="http://www.w3c.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:body>
    	<ui:composition template="/templates/template.xhtml">
    		<ui:define name="content">
    mais elle ne devrait pas changer en fonction du scope de mon managedBean. (Avec le scope Session, ma solution marche).

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    ya til une initialisation dans ton bean du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @PostConstruct
    public void init() {
    ...
    }
    Sinon peux-tu envoyer ton bean?

    Eric

  5. #5
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut
    Non, il n'y a aucune initialisation dans mon bean.

    mon bean n'a rien d'exceptionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    @ManagedBean(name="rechercheBean")
    @ViewScoped
    public class RechercheBean extends Message implements Serializable{
     
    	private static final long	serialVersionUID	= 6819859431493524895L;
     
    	/* Criteres */
    	private String choix;
    	private String critere1;
    	private String critere1;
     
     
    	/* Ajout critere */
    	public void ajouter() {
    		if (choix.equals("c1")) {
    			System.out.println(critere1);
    		}
    		else {
    			System.out.println(critere2);
    		}
     
    	}
     
    /*get & set ....*/
     
    }
    j'pense vraiment que le problème vienne du <p:ajax>

  6. #6
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut
    Il n'y a aucun autre moyen de mettre à jour un panelgrid en fonction d'un selectoneradio sans utiliser un <p:ajax> ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] problème avec readyState
    Par Booyakha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/04/2006, 16h52
  2. [AJAX] probleme avec innerhtml
    Par GTJuanpablo dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/03/2006, 13h21
  3. AJAX : Problème avec les accents...
    Par @drien dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/01/2006, 14h33
  4. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo