You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by hemant <ya...@softhome.net> on 2002/07/30 16:13:07 UTC

Checkboxes and Intermittent BeanUtils.populate Error

Comrades,

I check a checkbox and submit, I get the error. If I do not use the checkbox and hit submit, the page comes up successfully. Any issues with primitives in relation to the FormBean member population?

The strange thing is that this problem does not occur all the time. The page prior to this JSP has a form with checkboxes and that works fine with checkboxes checked. That is creepy and worries me.

I looked at the source code and here is a snippet from BeanUtils.setProperty(Object, String)

//------------------------

else {                             // Value into scalar
            if (value instanceof String || (value == null && type.isPrimitive())) {
                newValue = ConvertUtils.convert((String) value, type);
            } else if (value instanceof String[]) {
                newValue = ConvertUtils.convert(((String[]) value)[0],
                                                type);
            } else {
                newValue = value;
            }
        }
//------------------------

I wonder if this part is messing things up for primitive types. I checked the checkBox Value and it got the String as "on". 

Now the code that takes this "on" and sets the ValueObject boolean variable to true seems to be causing the problem.

My getters for boolean are getFoo() and setFoo() where foo is a boolean. Should it be setFoo() and isFoo()??


Please Advise
hemant










javax.servlet.ServletException: BeanUtils.populate
	java.lang.Throwable(java.lang.String)
	java.lang.Exception(java.lang.String)
	javax.servlet.ServletException(java.lang.String, java.lang.Throwable)
	void org.apache.struts.util.RequestUtils.populate(java.lang.Object, java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest)
	void org.apache.struts.action.RequestProcessor.processPopulate(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.apache.struts.action.ActionForm, org.apache.struts.action.ActionMapping)
	void org.apache.struts.action.RequestProcessor.process(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	void org.apache.struts.action.ActionServlet.process(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	void org.apache.struts.action.ActionServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	void org.apache.catalina.core.ApplicationDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	void org.apache.catalina.core.ApplicationDispatcher.doForward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	void org.apache.catalina.core.ApplicationDispatcher.forward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	void org.apache.struts.action.RequestProcessor.doForward(java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	void org.apache.struts.action.RequestProcessor.processActionForward(javax.servlet.http.HttpServletRequest, javax