Bonsoir,
j'ai besoin de vos lumieres. voila ce qui me
j'ai une classe Lit (pour l'instant je me base sur un Tuto),
Lit contient un ID (integer), et une String Taille et une String Details, et les getters/setters généré par ganimede.
dans mon Actionform j'ai une string test, les getters/setter correspondants.
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 public class Lit { private int ID_lit; private String Taille; private String Details; Lit() { } Lit(int ind, String size, String Details) { this.setID_lit(ind); this.setTaille(size); this.setDetails(Details); } public void gen_lit(int ind, String size, String Details) { this.setID_lit(ind); this.setTaille(size); this.setDetails(Details); } public void gen_lit( String size, String Details) { this.setTaille(size); this.setDetails(Details); } public int getID_lit() { return ID_lit; } public void setID_lit(int id_lit) { ID_lit = id_lit; } public String getTaille() { return new String(Taille); } public void setTaille(String Taille) { this.Taille = Taille; } public String getDetails() { return new String(Details); } public void setDetails(String details) { Details = details; } }
j'ai un objet Lit, les getters/setters et il est initialisé.
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
67
68
69
70
71
72
73
74 public class LoginForm extends ActionForm { private String login; private String password; Lit t = new Lit(); public String test=new String("ahhaha"); public LoginForm() { super(); // TODO Auto-generated constructor stub System.out.println("Session a ete crée"); t.gen_lit(0,"truc", "toto"); } public String getTaille() { System.out.println("Execution de bean getTaille"); System.out.println(""); return t.getTaille(); } public Lit getLit() { return t; } public void setLit(Lit t) { this.t = t; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getTest() { return test; } public void setTest(String test) { this.test = test; } }
voici mon index.jsp :
ce que je désespère est de pouvoir dans mon index.jsp afficher :
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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="core" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html:html> <head> <title>tot <bean:message key="index.title"/> </title> <style type="text/css"> <!-- <%@ include file="/WEB-INF/css/index.css" %> --> </style> </head> <body> <br> <html:form action="/login"> <nested:nest property="t"> Taille Lit: <nested:text property="Taille" /> </nested:nest> <bean:message key="prompt.login" /> <html:text property="login"></html:text> <bean:message key="prompt.password" /> <html:password property="password"></html:password> <br> <html:submit> <bean:message key="index.login" /> </html:submit> </html:form> </body> </html:html>
1) la string test
2) la String taille de l'objet lit
lorsque je l'exécute voici ce que j' obtient : No getter method for property: "t.Taille" of bean: "LoginForm"
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
67
68
69
70
71
72
73
74
75
76 Etat HTTP 500 - -------------------------------------------------------------------------------- type Rapport d'exception message description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête. exception org.apache.jasper.JasperException: An exception occurred processing JSP page /src/index.jsp at line 36 33: <core:out value="${test}" /> 34: <nested:nest property="t"> 35: 36: Taille Lit: <nested:text property="Taille" /> 37: </nested:nest> 38: 39: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:397) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) cause mère javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method for property: "t.Taille" of bean: "LoginForm" org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779) org.apache.jsp.src.index_jsp._jspService(index_jsp.java:108) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) cause mère javax.servlet.jsp.JspException: No getter method for property: "t.Taille" of bean: "LoginForm" org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:915) org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:123) org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102) org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80) org.apache.struts.taglib.nested.html.NestedTextTag.doStartTag(NestedTextTag.java:63) org.apache.jsp.src.index_jsp._jspx_meth_nested_005ftext_005f0(index_jsp.java:456) org.apache.jsp.src.index_jsp._jspx_meth_nested_005fnest_005f0(index_jsp.java:425) org.apache.jsp.src.index_jsp._jspx_meth_html_005fform_005f0(index_jsp.java:339) org.apache.jsp.src.index_jsp._jspx_meth_html_005fhtml_005f0(index_jsp.java:283) org.apache.jsp.src.index_jsp._jspService(index_jsp.java:101) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de JBossWeb/2.0.1.GA. -------------------------------------------------------------------------------- JBossWeb/2.0.1.GA
Or d'après ce que j'ai compris,
- le tag nested va tenter d'appeler t.getTaille() afin d'obtenir la propriété Taille ? mais si celui existe dans t, pourquoi il le cherche dans le loginForm ?
j'ai d'ailleurs tenté de créer une méthode getTaille qui retourne Taille dans le loginForm et cela ne change rien.
- En outre, si je ne m'abuse, test (la String dans le loginForm) je peux l'afficher par un <core:out> car c'est une simple string de mon loginform ?
- pourquoi si je retire le tag nested, il ne m'affiche rien ?
- tandis que Lit t, lui je dois employer <nested>, vous confirmez ?
j'ai déclaré mon action avec pour scope la session donc logiquement je n'ai pas de soucis de scope ?
dernier question de novice :
les taglib quand on les déclare, il vaut mieux employer standard.jar ou alors copier les tld dans web-inf ? les documentations que je trouve (google et livre) parle de copier dans web-inf mais rarement de standard.jar
et voici mon strut-config:
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="LoginForm" type="Tuto.LoginForm"></form-bean> </form-beans> <action-mappings> <action path="/login" type="Tuto.LoginAction" name="LoginForm" scope="session" input="/src/index.jsp"> <forward name="mainmenu" path="/src/mainmenu.jsp" redirect="true"/> </action> </action-mappings> <message-resources parameter="Tuto.ApplicationRessources"/> </struts-config>
Partager