Hello, @Alessio: I don't think so. Actually, I'm using ArrayList in my form so it's assumed that it would contain any Object (no restriction there) so when I fill it with Product It can cast it (well, that's what I think at least).
@Marco: I'll try that maybe it's one reason Thanks a lot for all your comments! Hanen On Mon, Oct 19, 2009 at 2:33 PM, Alessio Mereu <grugno.mezzo...@gmail.com>wrote: > 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 > > > > >