You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "RUCH,SCOTT (HP-NewJersey,ex2)" <sc...@hp.com> on 2001/07/05 05:21:53 UTC

Form (post) data encoding and form beans

The issue of form data encoding has been discussed
ad nauseum, however I didn't see anything in the
archives regarding how one deals with arbitrary
encodings when using Struts form beans.

The introduction of ServletRequest.setEncoding()
in 2.3 helps alleviate the form data encoding issue,
but can Struts form bean users capitalize on this 
enhancement?  setEncoding() needs to be called before 
any of the form data is processed.  By the time the 
action servlet gains control, the form bean has been 
populated with the form data using some default encoding.  
The various commercial J2EE application servers have 
proprietary ways of specifying a form data encoding, 
but I (for one) would like to see a generic way of 
handling this in Struts that doesn't require a 
different configuration per app server.

(BTW: is there a way to set form encoding on a 
per-web-application basis in Tomcat 3.2 or 4.0?  I 
haven't  been able to find any info about this...)

Is any thought being given to allowing the JSP
developer to specify the encoding of form data using
attributes in Struts tags - or through some other
mechanism?

--
Scott W. Ruch              hewlett-packard company
scott_ruch@hp.com            hp bluestone software
856.638.6036              http://www.bluestone.com

Re: Form (post) data encoding and form beans

Posted by "Craig R. McClanahan" <cr...@apache.org>.

On Wed, 4 Jul 2001, RUCH,SCOTT (HP-NewJersey,ex2) wrote:

> 
> The issue of form data encoding has been discussed
> ad nauseum, however I didn't see anything in the
> archives regarding how one deals with arbitrary
> encodings when using Struts form beans.
> 
> The introduction of ServletRequest.setEncoding()
> in 2.3 helps alleviate the form data encoding issue,
> but can Struts form bean users capitalize on this 
> enhancement?  setEncoding() needs to be called before 
> any of the form data is processed.  By the time the 
> action servlet gains control, the form bean has been 
> populated with the form data using some default encoding.  
> The various commercial J2EE application servers have 
> proprietary ways of specifying a form data encoding, 
> but I (for one) would like to see a generic way of 
> handling this in Struts that doesn't require a 
> different configuration per app server.
> 
> (BTW: is there a way to set form encoding on a 
> per-web-application basis in Tomcat 3.2 or 4.0?  I 
> haven't  been able to find any info about this...)
> 

You could certainly do this with a Filter, which is another feature of the
Servlet 2.3 API enhancements.  The basic idea would be to write a Filter
than examined the request headers, and then called
request.setCharacterEncoding() with an appropriate encoding value *before*
the Struts controller servlet ever saw the request.  Because Tomcat 4.0
supports Servlet 2.3, this is certainly a viable strategy.

> Is any thought being given to allowing the JSP
> developer to specify the encoding of form data using
> attributes in Struts tags - or through some other
> mechanism?
> 

The problem with that approach is that the Struts tags are processed when
the page is created, not when the subsequent request is received and
processed.

> --
> Scott W. Ruch              hewlett-packard company
> scott_ruch@hp.com            hp bluestone software
> 856.638.6036              http://www.bluestone.com
> 

Craig McClanahan