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 :

Exception lors des <t:message>


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Par défaut Exception lors des <t:message>
    Bonjour,

    Pour résumer mon problème, j'ai mes <t:message> qui "explosent"
    Je travaille avec MyFaces1.1.1 et Tomahawk1.1.1
    Voici le code fautif :
    Ma JSP
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"
        errorPage="presentation/error.jsp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
     
    <html>
    	<%@include file="./inc/head.inc"%>
     
    <body>
     
    <f:view>
    	<h:form id="FormAttributs">
    		<h:panelGrid 
    			id="GrilleAttributs"
    			columns="2" 
    			styleClass="cssFormulaireFond"
    			width="100%">
    			<h:outputLabel for="nomIdForm" value="Nom"/>
    			<h:inputText 
                   	maxlength="50"
                   	size="25"
                    styleClass="cssInputText"
                    readonly="false"
    				id="nomIdForm"
                   	value="#{beanPersonne.personneCourante.nom}"
                   	required="true"/>
                <h:outputLabel value=""/>
            	<t:message for="nomIdForm" styleClass="cssTexteRouge" showDetail="true" showSummary="true"/>
            </h:panelGrid>
            <h:commandButton 
    			action="#{beanPersonne.valider}"
    			value="Valider"
    			styleClass="cssBoutonMilieuActif"
    			rendered="true"/>					
    	</h:form>
    </f:view>
     
    </body>
    </html>
    Mon bean :
    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
    package test.backing;
     
    import test.objet.PersonneValeur;
     
    public class TestPersonne {
     
    	private PersonneValeur personneCourante;
     
    	public PersonneValeur getPersonneCourante() {
    		if (personneCourante == null) {
    			personneCourante = new PersonneValeur();
    		}
    		return personneCourante;
    	}
     
    	public void setPersonneCourante(PersonneValeur personne) {
    		personneCourante = personne;
    	}
     
    	public String valider() {
    		return "OK";
    	}
    }
    Mon web.xml
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?xml version="1.0"?>
    <web-app version="2.4"
     xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    	<display-name>TEST</display-name>
    <!-- Context -->
    	<context-param>
    		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    		<param-value>server</param-value>
    	</context-param>
    	<context-param>
    		<param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
    		<param-value>true</param-value>
    	</context-param>
    	<context-param>
    		<param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
    		<param-value>false</param-value>
    	</context-param>
    	<context-param>
    		<param-name>org.apache.myfaces.PRETTY_HTML</param-name>
    		<param-value>false</param-value>
    	</context-param>
    	<context-param>
    		<param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
    		<param-value>true</param-value>
    	</context-param>
    <!-- Filter -->
    	<filter>
    		<filter-name>extensionsFilter</filter-name>
    		<filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
    		<init-param>
    			<param-name>uploadMaxFileSize</param-name>
    			<param-value>100m</param-value>
    		</init-param>
    		<init-param>
    			<param-name>uploadThresholdSize</param-name>
    			<param-value>100k</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>extensionsFilter</filter-name>
    		<url-pattern>*.jsf</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>extensionsFilter</filter-name>
    		<url-pattern>/faces/*</url-pattern>
    	</filter-mapping>
    	<listener>
    		<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    	</listener>
    <!-- Servlet -->
    	<servlet>
    		<servlet-name>Faces Servlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>Faces Servlet</servlet-name>
    		<url-pattern>*.jsf</url-pattern>
    	</servlet-mapping>
    <!-- Login -->
    	<login-config>
    		<auth-method>BASIC</auth-method>
    	</login-config>
    </web-app>
    Donc dans ma JSP, j'ai un champ obligatoire "Nom" (d'ailleurs il n'y a que celui là ). Et si je ne le remplis pas et que j'appuie sur valider, je m'attend à ce que le <t:message> en dessous m'affiche une erreur. Au lieu de ça, j'ai l'exception suivante :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    cause mère
     
    java.lang.NullPointerException: expr
    	javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:210)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.createOutputLabelMap(HtmlMessageRenderer.java:200)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.createOutputLabelMap(HtmlMessageRenderer.java:214)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.createOutputLabelMap(HtmlMessageRenderer.java:214)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.getOutputLabelMap(HtmlMessageRenderer.java:184)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.findInputLabel(HtmlMessageRenderer.java:128)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.getSummary(HtmlMessageRenderer.java:66)
    	org.apache.myfaces.renderkit.html.HtmlMessageRendererBase.renderSingleFacesMessage(HtmlMessageRendererBase.java:101)
    	org.apache.myfaces.renderkit.html.HtmlMessageRendererBase.renderMessage(HtmlMessageRendererBase.java:85)
    	org.apache.myfaces.renderkit.html.ext.HtmlMessageRenderer.encodeEnd(HtmlMessageRenderer.java:54)
    	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331)
    	org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:450)
    	org.apache.myfaces.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:203)
    	org.apache.myfaces.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:85)
    	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331)
    	javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:349)
    	javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:253)
    	org.apache.myfaces.taglib.UIComponentBodyTagBase.doEndTag(UIComponentBodyTagBase.java:55)
    	org.apache.jsp.test_jsp._jspx_meth_h_005fpanelGrid_005f0(test_jsp.java:268)
    	org.apache.jsp.test_jsp._jspx_meth_h_005fform_005f0(test_jsp.java:205)
    	org.apache.jsp.test_jsp._jspx_meth_f_005fview_005f0(test_jsp.java:172)
    	org.apache.jsp.test_jsp._jspService(test_jsp.java:135)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415)
    	org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
    	org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
    	org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
    Quelques petits test (qui montrent que c'est bien le t:message) :
    - si on me required="false" -> OK pas d'exception
    - si on enlève la ligne <t:message[...]> -> pas d'exception
    - si je met un validateur qui renvoie un message d'erreur (exception)

    Je ne sais plus quoi testé...

    Si vous avez une idée, n'hésitez pas !!!

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Par défaut
    Je viens de trouver la réponse à mon problème, donc je vais la mettre pour ceux qui l'aurait aussi
    Il faut savoir que l'exception ne se lève en MyFaces 1.1.1 et pas en MyFaces 1.1.4

    Et sinon la ligne à changer dans la JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputLabel value=""/>
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value=""/>
    Le message se sert des outputLabel pour construire le message d'erreur. Et vu que le outputLabel précédent le message n'avait ni ID, ni valeur, je suppose que ça le perturbait légèrement (ce n'est qu'une supposition ...)

    En espérant que ça serve à quelqu'un un jour

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

Discussions similaires

  1. [Liferay] Exception lors d'utilisation des associations avec criteria
    Par lamis2009 dans le forum Portails
    Réponses: 0
    Dernier message: 17/06/2010, 18h09
  2. Gestion des exceptions et des messages à afficher
    Par Aurélie38 dans le forum Struts 1
    Réponses: 0
    Dernier message: 01/07/2009, 11h28
  3. Message d'erreur lors des liaisons
    Par amerex dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/03/2009, 13h39
  4. Désactiver les messages du noyau lors des montages
    Par FloMo dans le forum Administration système
    Réponses: 2
    Dernier message: 02/02/2008, 13h32
  5. Exception lors d'un envoi d'un message soap à un ws java
    Par Cixi dans le forum Services Web
    Réponses: 2
    Dernier message: 08/06/2007, 17h05

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