Hallo,
ich bin ein Neuling in Sachen Struts und komme bei meinem Projekt nicht ganz klar.
In der API habe ich gelesen, dass ich für den iterate-Tag extra getter-Methoden brauche, um aus der Map die Values zu bekommen.
Irgendwie haut das bei mir nicht so hin und ich finde den Fehler nicht
Könnt ihr mir da helfen?
meine jsp-sieht wie folgt aus:
die Methode getCatalog(), sammelt alle Produktkategorien, sowie ein Zufallsbild von den Produkten. Die Ausgabe funktioniert einwandfrei.
und dann dachte ich dass ich eine extra Klasse brauch, wo ich nun die Values auslesen kann mit der getter-Methode
Könnt ihr mir da weiterhelfen?
Ich bekomme immer denFehler:
ich bin ein Neuling in Sachen Struts und komme bei meinem Projekt nicht ganz klar.
In der API habe ich gelesen, dass ich für den iterate-Tag extra getter-Methoden brauche, um aus der Map die Values zu bekommen.
Irgendwie haut das bei mir nicht so hin und ich finde den Fehler nicht

Könnt ihr mir da helfen?
meine jsp-sieht wie folgt aus:
Code:
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ page import="shoputils.EmmaShop,products.GetCategoryBean"%>
<% request.setAttribute("category",EmmaShop.getEmmaCatalog().getCategory()); %>
<h1> Kategorien </h1>
<logic:notEmpty name="category">
<table>
<logic:iterate name="category" id="item" >
<tr>
<td><bean:write name="item" property="value(key)"/></td>
<td><html:link page="productSite.do?"><bean:write name="item" property="key"/></html:link></td>
</tr>
</logic:iterate>
</table>
</logic:notEmpty>
die Methode getCatalog(), sammelt alle Produktkategorien, sowie ein Zufallsbild von den Produkten. Die Ausgabe funktioniert einwandfrei.
Code:
public Map<String,String> getCategory(){
Map<String,String> mapCat = new HashMap<String,String>();
Iterator<CatalogItem> iter = iterator(null,true);
Iterator<CatalogItem> iter2 = iterator(null,true);
Set<String> setUrl = new HashSet<String>();
Random generator = new Random();
while (iter.hasNext()){
Product prod = (Product)iter.next();
String cat = prod.getCategory();
GetCategoryBean catBean = new GetCategoryBean();
while (iter2.hasNext() && !mapCat.containsKey(cat) ){
Product prod2 = (Product)iter2.next();
if (prod2.getCategory().equals(cat)){
setUrl.add(prod2.getPicUrl());
}
}
if (!mapCat.containsKey(cat)){
Object[] arrayUrl = setUrl.toArray();
String picUrl = (String)arrayUrl[generator.nextInt(arrayUrl.length-1)];
mapCat.put(cat,picUrl);
catBean.setCategory(mapCat);
}
}
return mapCat;
}
und dann dachte ich dass ich eine extra Klasse brauch, wo ich nun die Values auslesen kann mit der getter-Methode
Code:
package products;
import java.util.Map;
import org.apache.struts.action.ActionForm;
public class GetCategoryBean extends ActionForm {
private Map<String,String> category;
public Map<String, String> getCategory() {
return category;
}
public void setCategory(Map<String, String> category) {
this.category = category;
}
public String getValue(String key) {
return category.get(key);
}
}
Könnt ihr mir da weiterhelfen?
Ich bekomme immer denFehler:
Code:
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Invalid access looking up property: "value(key)" of bean: "item"
at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:871)