DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=37683>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=37683

           Summary: document permitted form field names and provide a
                    validation method
           Product: Struts
           Version: 1.2.7
          Platform: Other
               URL: http://struts.apache.org/struts-
                    action/userGuide/building_model.html#actionform
        OS/Version: other
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Controller
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


Recently, I had to integrate with a portal that does a http form post into my
struts application.

Unfortunately, their field names (="action form bean properties") do not work
with struts. Perhaps they are breaking some standard, but at least with some php
environments, that was no problem.

The following form field names were ok:
- "card"
- "IV"

Problems arised with:
- "PortalID"
- "AuthValue"
- "ServiceID"
- "Created"

Unfortunately, struts simply ignores these.
The dirty fix is to manually extract them from the request parameters.

Suggestions:
1) document at the above help URL or within the
org.apache.struts.action.ActionForm JavaDoc
2) create a method that can be called during struts init() that
  a) takes all forms as declared in the struts-config.xml
  b) list the getter/setter properties that will not work!
3) print a debug message for fields that could not be processed during operation
(optionally)

Since I also used the validator, at least there, the problems explicitly 
surfaced:
<<Nov 28, 2005 3:41:09 PM org.apache.commons.validator.util.ValidatorUtils
getValueAsString
SEVERE: Unknown property 'ServiceID'
java.lang.NoSuchMethodException: Unknown property 'ServiceID'
   at
org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1122)
   at
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)
   at
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
   at 
org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
   at
org.apache.commons.validator.util.ValidatorUtils.getValueAsString(ValidatorUtils.java:105)
   at
org.apache.struts.validator.FieldChecks.validateMaxLength(FieldChecks.java:812)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at
org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:567)
   at org.apache.commons.validator.Field.validateForRule(Field.java:827)
   at org.apache.commons.validator.Field.validate(Field.java:906)
   at org.apache.commons.validator.Form.validate(Form.java:174)
   at org.apache.commons.validator.Validator.validate(Validator.java:367)
   at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:110)
   at
com.privasphere.privalope.util.PsphValForm.validateFromAction(PsphValForm.java:160)
   at
com.privasphere.privalope.control.action.LoginTicketAction.execute(LoginTicketAction.java:128)
   at
com.privasphere.privalope.control.action.LoginTicketAction.execute(LoginTicketAction.java:93)
   at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
   at 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
   at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
   at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
   at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
   at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
   at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
   at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
   at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:827)
   at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731)
   at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
   at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
   at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
   at java.lang.Thread.run(Thread.java:595)>>

Luckily, I was able to convince them to change the form field names, but others
might not be able to do that.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to