You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Brad Plies <br...@bulliondirect.com> on 2003/04/28 23:06:19 UTC

[Nasty] DynaActionForm problem: NoSuchMethodError??

Having a problem starting to use DynaActionForms.  I am trying
to introduce them into my webapp for their obvious benefits.  Not
only can I not get them to work at all, my logs are recording
errors that no one seems to get on any forum/faq/thread anywhere.

Here is what I have:

Struts 1.1-rc1
Validator 1.0.2
BeanUtils 1.6.1
Tomcat 4.1.24

In struts-config.xml:
<form-bean name="customerInfoForm"
   type="org.apache.struts.validator.DynaValidatorForm"
   <!-- dynamic="true" -->  <!-- Error no matter what this is -->
   >
   <form-property name="firstName" type="java.lang.String" />
   <form-property name="middleInitial" type="java.lang.String" />
   <form-property name="lastName" type="java.lang.String" />
   <form-property name="billingAddressLine1" type="java.lang.String" />
   <form-property name="billingAddressLine2" type="java.lang.String" />
   <form-property name="billingAddressLine3" type="java.lang.String" />
   <form-property name="billingCity" type="java.lang.String" />
   <form-property name="billingState" type="java.lang.String" />
   <form-property name="billingPostalCode" type="java.lang.String" />
   <form-property name="mailingAddressLine1" type="java.lang.String" />
   <form-property name="mailingAddressLine2" type="java.lang.String" />
   <form-property name="mailingAddressLine3" type="java.lang.String" />
   <form-property name="mailingCity" type="java.lang.String" />
   <form-property name="mailingState" type="java.lang.String" />
   <form-property name="mailingPostalCode" type="java.lang.String" />
   <form-property name="emailAddress" type="java.lang.String" />
   <form-property name="dayPhone1" type="java.lang.String" />
   <form-property name="dayPhone2" type="java.lang.String" />
   <form-property name="dayPhone3" type="java.lang.String" />
   <form-property name="evePhone1" type="java.lang.String" />
   <form-property name="evePhone2" type="java.lang.String" />
   <form-property name="evePhone3" type="java.lang.String" />
   <form-property name="faxPhone1" type="java.lang.String" />
   <form-property name="faxPhone2" type="java.lang.String" />
   <form-property name="faxPhone3" type="java.lang.String" />
</form-bean>

<action
   path="/sales/customerInfo"
   type="myapp.actions.CustomerInfoAction"
   name="customerInfoForm"
   attribute="customerInfoForm"
   input="/viewCart.do"
   scope="session"
   validate="true"
   parameter="sales.cart"> <!-- Not responsible for error -->
   <forward name="success" path="/sales/checkout.do" />
   <forward name="failure" path=".error" />
</action>

Basic JSP (enterCustomerInformation.jsp):
<html:form action="/sales/customerInfo>
   <%-- Error will happen even if this is blank --%>
</html:form>

Now here is when it gets interesting, the page will display an exception:
ServletException in:/sales/enterCustomerInformation.jsp] Exception creating 
bean of class org.apache.struts.validator.DynaValidatorForm: {1}'

${catalina.home}/logs/stderr.log shows:
org.apache.struts.util.RequestUtils createActionForm
SEVERE: Error creating form bean of class 
org.apache.struts.validator.DynaValidatorForm
java.lang.NoSuchMethodError: 
org.apache.struts.action.DynaActionForm.setDynaActionFormClass(Lorg/apache/struts/action/DynaActionFormClass;)V
         at 
org.apache.struts.action.DynaActionFormClass.newInstance(DynaActionFormClass.java:240)
         at 
org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:733)
         at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:594)
         at 
org.apache.jsp.enterCustomerInformation_jsp._jspx_meth_html_form_0(enterCustomerInformation_jsp.java:98)
         at 
org.apache.jsp.enterCustomerInformation_jsp._jspService(enterCustomerInformation_jsp.java:74)
         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)

The webapp log shows:
----- Root Cause -----
javax.servlet.ServletException: Exception creating bean of class 
org.apache.struts.validator.DynaValidatorForm: {1}
         at 
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:530)
         at 
org.apache.jsp.enterCustomerInformation_jsp._jspService(enterCustomerInformation_jsp.java:83)
         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)


Notice that the logged messages are funny looking in the logs:
* the "{1}'" on the rendered JSP & webapp log
* the "V" in the "DynaActionFormClass;)V" in the stderr.log
* the "Lorg" in the ".setDynaActionFormClass(Lorg/" in the stderr.log

This error is repeatable no matter what *Dyna* type I declare the 
<form-bean> as (
such as DynaActionForm, DynaValidatorActionForm, or even any base classes I 
establish)
Judging by the stacktrace, this error is deeper into the API than I am 
manipulating
myself.  And I do not feel I have done anything to draw a "NoSuchMethodError."

All my configs conform to the DTDs.

I cannot find any pre-existing threads about this issue, and I
am frustrated that everyone has DynaForms working for them and I don't :(.
Has anyone encountered this?  Can anyone reproduce this on their end?
Is this bug-submission worthy?

Thanks in advance to anyone who dares read all this and offers
their advice. 

Re: [Nasty] DynaActionForm problem: NoSuchMethodError??

Posted by Ian Hunter <ih...@hunterweb.net>.
How strange.  I just got that same error today and was searching for
references to it ... the {1} and all.  I swear.

My problem went away after making some minor adjustments to struts-config
and the JSPs having to do with a property of my DynaValidatorForm that
contains an array of other funky object types.  In all sincerity, I said to
a coworker, right before testing, "it's going to bother me a little if this
works now because we won't know what fixed it..."  So the short version is,
I never found out just why it said that.

Some odd things I see in your posted stuff include usage of the "attribute"
attribute as well as referring to actions for input and forward names --
those are the only places it's OK to have a JSP named...

I would simplify the problem to where you (temporarily) have only one field
in your DynaValidatorForm, get that working, then start adding back the
fields until it chokes again.

----- Original Message -----
From: "Brad Plies" <br...@bulliondirect.com>
To: <st...@jakarta.apache.org>
Sent: Monday, April 28, 2003 5:06 PM
Subject: [Nasty] DynaActionForm problem: NoSuchMethodError??


> Having a problem starting to use DynaActionForms.  I am trying
> to introduce them into my webapp for their obvious benefits.  Not
> only can I not get them to work at all, my logs are recording
> errors that no one seems to get on any forum/faq/thread anywhere.
>
> Here is what I have:
>
> Struts 1.1-rc1
> Validator 1.0.2
> BeanUtils 1.6.1
> Tomcat 4.1.24
>
> In struts-config.xml:
> <form-bean name="customerInfoForm"
>    type="org.apache.struts.validator.DynaValidatorForm"
>    <!-- dynamic="true" -->  <!-- Error no matter what this is -->
>    >
>    <form-property name="firstName" type="java.lang.String" />
>    <form-property name="middleInitial" type="java.lang.String" />
>    <form-property name="lastName" type="java.lang.String" />
>    <form-property name="billingAddressLine1" type="java.lang.String" />
>    <form-property name="billingAddressLine2" type="java.lang.String" />
>    <form-property name="billingAddressLine3" type="java.lang.String" />
>    <form-property name="billingCity" type="java.lang.String" />
>    <form-property name="billingState" type="java.lang.String" />
>    <form-property name="billingPostalCode" type="java.lang.String" />
>    <form-property name="mailingAddressLine1" type="java.lang.String" />
>    <form-property name="mailingAddressLine2" type="java.lang.String" />
>    <form-property name="mailingAddressLine3" type="java.lang.String" />
>    <form-property name="mailingCity" type="java.lang.String" />
>    <form-property name="mailingState" type="java.lang.String" />
>    <form-property name="mailingPostalCode" type="java.lang.String" />
>    <form-property name="emailAddress" type="java.lang.String" />
>    <form-property name="dayPhone1" type="java.lang.String" />
>    <form-property name="dayPhone2" type="java.lang.String" />
>    <form-property name="dayPhone3" type="java.lang.String" />
>    <form-property name="evePhone1" type="java.lang.String" />
>    <form-property name="evePhone2" type="java.lang.String" />
>    <form-property name="evePhone3" type="java.lang.String" />
>    <form-property name="faxPhone1" type="java.lang.String" />
>    <form-property name="faxPhone2" type="java.lang.String" />
>    <form-property name="faxPhone3" type="java.lang.String" />
> </form-bean>
>
> <action
>    path="/sales/customerInfo"
>    type="myapp.actions.CustomerInfoAction"
>    name="customerInfoForm"
>    attribute="customerInfoForm"
>    input="/viewCart.do"
>    scope="session"
>    validate="true"
>    parameter="sales.cart"> <!-- Not responsible for error -->
>    <forward name="success" path="/sales/checkout.do" />
>    <forward name="failure" path=".error" />
> </action>
>
> Basic JSP (enterCustomerInformation.jsp):
> <html:form action="/sales/customerInfo>
>    <%-- Error will happen even if this is blank --%>
> </html:form>
>
> Now here is when it gets interesting, the page will display an exception:
> ServletException in:/sales/enterCustomerInformation.jsp] Exception
creating
> bean of class org.apache.struts.validator.DynaValidatorForm: {1}'
>
> ${catalina.home}/logs/stderr.log shows:
> org.apache.struts.util.RequestUtils createActionForm
> SEVERE: Error creating form bean of class
> org.apache.struts.validator.DynaValidatorForm
> java.lang.NoSuchMethodError:
>
org.apache.struts.action.DynaActionForm.setDynaActionFormClass(Lorg/apache/s
truts/action/DynaActionFormClass;)V
>          at
>
org.apache.struts.action.DynaActionFormClass.newInstance(DynaActionFormClass
.java:240)
>          at
>
org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:733)
>          at
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:594)
>          at
>
org.apache.jsp.enterCustomerInformation_jsp._jspx_meth_html_form_0(enterCust
omerInformation_jsp.java:98)
>          at
>
org.apache.jsp.enterCustomerInformation_jsp._jspService(enterCustomerInforma
tion_jsp.java:74)
>          at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
>
> The webapp log shows:
> ----- Root Cause -----
> javax.servlet.ServletException: Exception creating bean of class
> org.apache.struts.validator.DynaValidatorForm: {1}
>          at
>
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:530)
>          at
>
org.apache.jsp.enterCustomerInformation_jsp._jspService(enterCustomerInforma
tion_jsp.java:83)
>          at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
>
>
> Notice that the logged messages are funny looking in the logs:
> * the "{1}'" on the rendered JSP & webapp log
> * the "V" in the "DynaActionFormClass;)V" in the stderr.log
> * the "Lorg" in the ".setDynaActionFormClass(Lorg/" in the stderr.log
>
> This error is repeatable no matter what *Dyna* type I declare the
> <form-bean> as (
> such as DynaActionForm, DynaValidatorActionForm, or even any base classes
I
> establish)
> Judging by the stacktrace, this error is deeper into the API than I am
> manipulating
> myself.  And I do not feel I have done anything to draw a
"NoSuchMethodError."
>
> All my configs conform to the DTDs.
>
> I cannot find any pre-existing threads about this issue, and I
> am frustrated that everyone has DynaForms working for them and I don't :(.
> Has anyone encountered this?  Can anyone reproduce this on their end?
> Is this bug-submission worthy?
>
> Thanks in advance to anyone who dares read all this and offers
> their advice.


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org