Product.getProducts(Env ) returns an ArrayList<String> not an ArrayList<Product> as U're supposing according your jsp.
So that the iteration is made over a list of Strings and Strings has no property nor getters for ProductName Is it correct? Alessio 2009/10/19 mlivro79 <ma...@livrieri.it> > > Hi, > > i think that if you call property productname the getter should be > getProductname() and not getProductName(). > > Is it correct? > > Bye, > Marco > > > > > > Hanen Ben Rhouma wrote: > > > > Hello, > > > > Please I have a problem to which I'm stuck since this morning: I am > trying > > to render the product list in a jsp page included into a struts 1.3.8 > > application and when iterating on the product entity parameters I get > this > > exception: > > > > No getter method for property: "productName" of bean: "product" > > > > * > > Here is my Product Class:* > > > > import com.perforce.api.CommitException; > > import com.perforce.api.DirEntry; > > import com.perforce.api.Env; > > import com.perforce.api.HashDecay; > > import com.perforce.api.PerforceException; > > import com.perforce.api.SourceControlObject; > > import java.util.ArrayList; > > > > /** > > * > > * @author hbenrhouma > > */ > > public final class Product extends SourceControlObject { > > > > private String id = ""; > > private String productname = ""; > > private static HashDecay products = null; > > > > /** > > * Default no-argument constructor. > > */ > > public Product() { > > super(); > > getCache(); > > } > > > > /** > > * Constructor that accepts the id of the product. This simply > creates > > an > > * instance that has the id set. No other information in the class > > will > > be > > * present until the #sync() sync() method is called. > > * > > * @param id Id for the product. > > */ > > public Product(String id) { > > this(); > > this.id = id; > > } > > > > private static HashDecay setCache() { > > if (null == products) { > > products = new HashDecay(600000); > > products.start(); > > } > > return products; > > } > > > > public HashDecay getCache() { > > return setCache(); > > } > > > > public String getId() { > > return id; > > } > > > > public void setId(String id) { > > this.id = id; > > } > > > > public String getProductName() { > > return productname; > > } > > > > public void setProductName(String productname) { > > this.productname = productname; > > } > > > > public static HashDecay getProducts() { > > return products; > > } > > > > public static void setProducts(HashDecay products) { > > Product.products = products; > > } > > > > /** > > * Returns an <code>Enumeration</code> of all <code>Product</code> > > objects. > > */ > > public static synchronized ArrayList getProducts(Env env) throws > > Exception { > > > > ArrayList<String> nodes = new ArrayList<String>(); > > try { > > DirEntry dir = new DirEntry(env, "//depot/*"); > > String[] dirs = dir.getDirNames(); > > for (int i = 0; i < dirs.length; i++) { > > nodes.add(dirs[i]); > > } > > > > } catch (Exception ex) { > > throw new Exception("getProducts couldn't be successfully > > executed"); > > } > > > > return nodes; > > } > > > > @Override > > public void commit() throws CommitException { > > throw new UnsupportedOperationException("Not supported yet."); > > } > > > > @Override > > public void sync() throws PerforceException { > > throw new UnsupportedOperationException("Not supported yet."); > > } > > > > @Override > > public String toXML() { > > throw new UnsupportedOperationException("Not supported yet."); > > } > > } > > > > > > *Here is the ProductListForm * > > > > import java.util.ArrayList; > > import javax.servlet.http.HttpServletRequest; > > import org.apache.struts.action.ActionErrors; > > import org.apache.struts.action.ActionForm; > > import org.apache.struts.action.ActionMapping; > > > > /** > > * Creation date: 14-10-2009 > > * > > * @struts.form name="productListForm" > > */ > > public class ProductListForm extends ActionForm { > > > > private ArrayList products; > > > > public ArrayList getProducts() { > > return products; > > } > > > > public void setProducts(ArrayList products) { > > this.products = products; > > } > > > > /* 14.10.2009 > > * reset the collection products > > */ > > @Override > > public void reset(ActionMapping arg0, HttpServletRequest arg1) { > > products = new ArrayList(); > > } > > > > /** > > * Method validate > > * @param mapping > > * @param request > > * @return ActionErrors > > */ > > @Override > > public ActionErrors validate(ActionMapping mapping, > > HttpServletRequest request) { > > return null; > > } > > } > > > > > > *Here is my ProductListAction* > > > > /** > > * Creation date: 14-10-2009 > > * > > * > > * @struts.action path="/productList" name="productListForm" > > scope="request" > > * validate="true" > > * @struts.action-forward name="showProductList" > > path="/jsp/productList.jsp" > > */ > > public class ProductListAction extends Action { > > > > /** > > * Method execute > > * > > * @param mapping > > * @param form > > * @param request > > * @param response > > * @return ActionForward > > */ > > @Override > > @SuppressWarnings("static-access") > > public ActionForward execute(ActionMapping mapping, ActionForm form, > > HttpServletRequest request, HttpServletResponse response) > > throws > > PerforceException { > > ProductListForm productListForm = (ProductListForm) form; > > > > /* > > * 14.10.2009 load the session facade and get all products > > */ > > try { > > productListForm.setProducts(Product.getProducts((Env) > > request.getSession().getAttribute("env"))); > > } catch (Exception ex) { > > throw new PerforceException("Error while trying to execute > > productListForm.getProducts method"); > > //return mapping.findForward(FAILURE); > > } > > return mapping.findForward("showProductList"); > > } > > } > > > > *And last here is **productList.jsp* > > > > <%@ page language="java"%> > > <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> > > <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> > > <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> > > > > <html> > > <head> > > <title>Show Product List</title> > > </head> > > <body bgcolor="#FFFFFF" marginheight="0" marginwidth="0" > topmargin="0" > > leftmargin="0"> > > <center> > > <TABLE cellspacing="0" cellpadding="0" border="0"> > > <table border="1"> > > <tbody> > > <%-- set the header --%> > > <tr> > > <td> > > Products > > </td> > > > > </tr> > > <%-- start with an iterate over the collection > > products --%> > > <logic:iterate name="productListForm" > > property="products" id="product"> > > <tr> > > <%-- product informations --%> > > <td> > > <bean:write name="product" > > property="productName" /> > > </td> > > > > </tr> > > </logic:iterate> > > <%-- end interate --%> > > > > <%-- if products cannot be found display a text > > --%> > > <logic:notPresent name="product"> > > <tr> > > <td colspan="5"> > > No products found. > > </td> > > </tr> > > </logic:notPresent> > > > > </tbody> > > </table> > > <br> > > </center> > > </body> > > </html> > > > > Please, do you have any idea about what's written wrong here? > > > > > > Thanks in advance, > > Hanen > > > > > > -- > View this message in context: > http://www.nabble.com/No-getter-method-for-property%3A-%22productName%22-of-bean%3A-%22product%22-tp25893174p25958255.html > Sent from the Struts - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > >