Affichage de propriete d'un actionForm
Bonsoir,
j'ai besoin de vos lumieres. voila ce qui me :evilred:
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.
Code:
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;
}
} |
dans mon Actionform j'ai une string test, les getters/setter correspondants.
j'ai un objet Lit, les getters/setters et il est initialisé.
Code:
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 :
Code:
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> |
ce que je désespère est de pouvoir dans mon index.jsp afficher :
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:
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:
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> |