Affichage d'une hashmap dans une jsp
Bonjour,
Je voudrais afficher les elements d'une hashmap que je mets dans la session lors de mes actions. Pour cela je voudrais utiliser logic:iterate.
C'est une bonne idée ? et comment je dois faire ?
Mon hashmap est de ce type : HashMap<String, Employee>
fk04
Par défaut Affichage d'une hashmap dans une jsp
Bonjour,
le item, je doit mettre quoi ? parce que lorsque je mets employee, j'ai ce message d'erreur :
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
type Rapport d'exception
message
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
exception
javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /resultlistrecord.jsp at line 18
15: </logic:notEmpty>
16: <logic:empty name="map">
17: <div>pas vide</div>
18: <logic:iterate id="map" name="Employee">
19: <bean:write name="employee.phone" />
20:
21: </logic:iterate>
Stacktrace:
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
org.apache.jasper.JasperException: An exception occurred processing JSP page /resultlistrecord.jsp at line 18
15: </logic:notEmpty>
16: <logic:empty name="map">
17: <div>pas vide</div>
18: <logic:iterate id="map" name="Employee">
19: <bean:write name="employee.phone" />
20:
21: </logic:iterate>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean: "Employee" in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.resultlistrecord_jsp._jspService(resultlistrecord_jsp.java:157)
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:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
javax.servlet.jsp.JspException: Cannot find bean: "Employee" in any scope
org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:864)
org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:236)
org.apache.jsp.resultlistrecord_jsp._jspService(resultlistrecord_jsp.java:106)
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:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.10. |
d'avance merci,
fk04
Par défaut Affichage d'une hashmap dans une jsp
Bonjour,
J'ai essayé mais ça ne marche pas.
mon fichier struts-config.xml :
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
| <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="recordForm" type="phoneBookForm.RecordForm" />
</form-beans>
<global-exceptions>
</global-exceptions>
<action-mappings>
<action path="/addrecord"
name="recordForm"
input="/addrecord.jsp"
type="phoneBookAction.AddRecordAction"
scope="session">
<forward name="page" path="/addrecord.jsp" />
<forward name="success" path="/resultaddrecord.jsp" />
</action>
<action path="/listrecordsredirection"
type="org.apache.struts.actions.ForwardAction"
parameter="/resultlistrecord.jsp">
</action>
<action path="/addrecordredirection"
type="org.apache.struts.actions.ForwardAction"
parameter="/addrecord.jsp">
</action>
</action-mappings>
</struts-config> |
voici ma classe employee :
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
| package phoneBookBo;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Employee {
private Personne personne;
private String phone;
private String departement;
public Employee(Personne personne, String phone, String departement) {
this.personne = personne;
this.phone = phone;
this.departement = departement;
}
/**
* @return the departement
*/
public String getDepartement() {
return departement;
}
/**
* @param departement
* the departement to set
*/
public void setDepartement(String departement) {
this.departement = departement;
}
/**
* @return the personne
*/
public Personne getPersonne() {
return personne;
}
/**
* @param personne
* the personne to set
*/
public void setPersonne(Personne personne) {
this.personne = personne;
}
/**
* @return the phone
*/
public String getPhone() {
return phone;
}
/**
* @param phone
* the phone to set
*/
public void setPhone(String phone) {
this.phone = phone;
}
public static void listRecords(Map map) {
Collection values = map.values();
Iterator it = values.iterator();
while (it.hasNext()) {
Personne personne = ((Employee) it.next()).getPersonne();
System.out.println(personne.getLastname() + " "
+ personne.getFirstname());
}
}
public void addRecord(Map<String, Employee> map, String key) {
if (map.containsKey(key)) {
System.out.println("sorry, the key already exists");
}
Collection values = map.values();
Iterator it = values.iterator();
boolean found = false;
while (it.hasNext() && !found) {
Personne personne = ((Employee) it.next()).getPersonne();
if (this.personne.getFirstname().equals(personne.getFirstname())
&& this.personne.getLastname().equals(
personne.getLastname())) {
found = true;
}
}
if (found) {
System.out.println("sorry, the personne already exists");
} else {
map.put(key, this);
}
}
public void deleteRecord(Map<String, Employee> map) {
if (map.size() != 0) {
Set lesCles = map.keySet();
Iterator it = lesCles.iterator();
boolean found = false;
while (it.hasNext() && !found) {
String key = (String) it.next();
Employee employee = (Employee) map.get(key);
if (this.personne.getFirstname().equals(
employee.getPersonne().getFirstname())
&& this.personne.getLastname().equals(
employee.getPersonne().getLastname())) {
found = true;
map.remove(key);
}
}
if (!found) {
System.out.println(personne.getLastname() + " "
+ personne.getFirstname()
+ " doesn't exit in our phone book");
}
} else {
new Exception("Sorry, there is no record to delete");
System.out.println("Sorry, there is no record to delete");
}
}
// public static void sortRecords(Map map){
//
// Collection values = map.values();
// Set lesCles = map.keySet();
// List mapValues = new ArrayList(values);
// List mapCles = new ArrayList(lesCles);
// Collections.sort(mapValues, new EmployeesComparator());
// map.clear();
// Object[] sortedArray = mapValues.toArray();
// for (int i=0; i<mapValues.size(); i++)
// {
// map.put(mapCles.get(mapValues.indexOf(sortedArray[i])), sortedArray[i]);
// }
//
// }
public void editRecord(Map map, Employee employee) {
Collection values = map.values();
Iterator it = values.iterator();
boolean found = false;
while (it.hasNext() && !found) {
Personne personne = ((Employee) it.next()).getPersonne();
if (personne.getFirstname().equals(
employee.getPersonne().getFirstname())
&& personne.getLastname().equals(
employee.getPersonne().getLastname())) {
found = true;
System.out.println(personne.getLastname() + " "
+ personne.getFirstname()
+ " already exist in our phone book");
}
if (!found) {
this.personne.setFirstname(employee.getPersonne()
.getFirstname());
this.personne.setLastname(employee.getPersonne().getLastname());
this.departement = employee.getDepartement();
this.phone = employee.getPhone();
}
}
}
} |
la HashMap que j'ai envie d'afficher les elements est de ce type :
Code:
HashMap<String, Employee> map = new HashMap<String, Employee>();
fk04
Par défaut Affichage d'une hashmap dans une jsp
voici mon erreur
Citation:
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
javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /resultaddrecord.jsp at line 21
18: <logic:notEmpty name="map">
19: <div>La liste n'est pas vide</div>
20: <logic:iterate id="employee" name="map">
21: <bean:write name="employee" property="phone" />
22: <bean:write name="employee" property="departement" />
23:
24: </logic:iterate>
Stacktrace:
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
org.apache.jasper.JasperException: An exception occurred processing JSP page /resultaddrecord.jsp at line 21
18: <logic:notEmpty name="map">
19: <div>La liste n'est pas vide</div>
20: <logic:iterate id="employee" name="map">
21: <bean:write name="employee" property="phone" />
22: <bean:write name="employee" property="departement" />
23:
24: </logic:iterate>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method for property: "phone" of bean: "employee"
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.resultaddrecord_jsp._jspService(resultaddrecord_jsp.java:163)
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:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
javax.servlet.jsp.JspException: No getter method for property: "phone" of bean: "employee"
org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:915)
org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:233)
org.apache.jsp.resultaddrecord_jsp._jspx_meth_bean_005fwrite_005f0(resultaddrecord_jsp.java:212)
org.apache.jsp.resultaddrecord_jsp._jspService(resultaddrecord_jsp.java:121)
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:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.10.
Apache Tomcat/6.0.10
Par défaut Affichage d'une hashmap dans une jsp
Merci c_nvy:king:
Le sourire est revenu:mrgreen: car ça marche...
fk04