Topic: Struts Form bean property naming problem

  Print this page

1.Struts Form bean property naming problem Copy to clipboard
Posted by: JasonZhang
Posted on: 2003-01-19 11:02

I use Struts for a quite while. It works quite well until yesterday when I made a form bean to refactory some codes. There was a request parameter named “sName”. So I used the same name as a property for the form bean. See the following code (simplified),

public class FormTest extends ActionForm
{
private String sName;
public String getSName()
{
return this.sName;
}
public void setSName(String sName)
{
this.sName=sName;
}
}
In JSP page, I used custom tag <html:text property="sName" maxlength="60"/> to output the input box. Unfortunately I got error message - “org.apache.jasper.JasperException: No getter method for property sName of bean FormTest”.
So I changed the property name to lower case to “sname” and corresponding getter and setter methods to getSname() and setSname(String sname). Everything worked fine. I doubted that naming was not standard. So I checked with JavaBean specification and found nothing wrong with the name “sName”. I tested on both Weblogic 6.1 and Tomcat 4.1.18 and got same result.

Surprisingly I tested with DynaActionForm by using the same property name “sName”. It works!

If anybody has the same situation, one solution is to change the property name that first few letters are lower cases. Second solution is to use DynaActionForm.

2.Re:Struts Form bean property naming problem [Re: JasonZhang] Copy to clipboard
Posted by: floater
Posted on: 2003-01-20 13:16

JasonZhang wrote:
I use Struts for a quite while. It works quite well until yesterday when I made a form bean to refactory some codes. There was a request parameter named “sName”. So I used the same name as a property for the form bean. See the following code (simplified),

public class FormTest extends ActionForm
{
private String sName;
public String getSName()
{
return this.sName;
}
public void setSName(String sName)
{
this.sName=sName;
}
}
In JSP page, I used custom tag <html:text property="sName" maxlength="60"/> to output the input box. Unfortunately I got error message - “org.apache.jasper.JasperException: No getter method for property sName of bean FormTest”.
So I changed the property name to lower case to “sname” and corresponding getter and setter methods to getSname() and setSname(String sname). Everything worked fine. I doubted that naming was not standard. So I checked with JavaBean specification and found nothing wrong with the name “sName”. I tested on both Weblogic 6.1 and Tomcat 4.1.18 and got same result.

Surprisingly I tested with DynaActionForm by using the same property name “sName”. It works!

If anybody has the same situation, one solution is to change the property name that first few letters are lower cases. Second solution is to use DynaActionForm.

I think it's more of a JSP problem. I had this case in last summer.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923