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
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
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 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 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"; } }
Donc dans ma JSP, j'ai un champ obligatoire "Nom" (d'ailleurs il n'y a que celui là
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>). 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 :
Quelques petits test (qui montrent que c'est bien le t:message) :
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)
- 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![]()
Partager