You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Paul Benedict (JIRA)" <ji...@apache.org> on 2007/11/13 09:22:37 UTC

[jira] Closed: (STR-2000) Automatic invalid format handling for form bean

     [ https://issues.apache.org/struts/browse/STR-2000?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul Benedict closed STR-2000.
------------------------------

    Resolution: Won't Fix
      Assignee:     (was: Struts Developers)

> Automatic invalid format handling for form bean
> -----------------------------------------------
>
>                 Key: STR-2000
>                 URL: https://issues.apache.org/struts/browse/STR-2000
>             Project: Struts 1
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 1.1 RC2
>         Environment: Operating System: All
> Platform: All
>            Reporter: Enzhong Fu
>            Priority: Minor
>
> Currently, Struts recommends all fields of ActionForm be of type String. If you 
> use other type (such as Date), and user inputs the value in an invalid format 
> so the value could not convert to the suitable type, BeanUtils would throw an 
> exception and it would propagate back to the user. Use only String type for 
> ActionForm fields can display to the user the original values they input, but 
> in Action class code is needed to transform from String type to type used in 
> business objects.
> Not all people like this. Today one more developer posted it as a bug. Ideally, 
> we hope to use more types in a form bean while still able to display the 
> original inputs to the user when a validation error occurs. I think the 
> following solution can achieve it,
> 0. Basic validation, "Valid Format" and "Required", should be handled before 
> populating form bean.
> 1. In RequestProcessor class, processPopulate() should mimic processValidate(). 
> It returns a boolean to indicate whether processPopulate is successful or not. 
> If not successful, it should forward to the input page like processValidate 
> does.
> 2. Instead of throwing exception, BeanUtils class should catch the exception 
> for populating error and continue. It returns a list of the fields that have 
> problem (normally invalid format). Error messages constructed based on these 
> fields will be stored in Globals.ERROR_KEY.
> 3. When there is populating error, a HashMap is created to hold the original 
> request parameters (all Strings, nested fields can have nested HashMaps). The 
> HashMap is stored at a global key (Globals.xxx) in the request.
> 4. The html:form tag will get the stored HashMap and put it to 
> Constants.BEAN_KEY for field tags to use (when there is populating error).
> Thus, you can use other types in form bean (nest business objects in form bean, 
> for example) and Struts can still display the user's original input when in 
> error. I tried it on Struts1.1-rc2 and it worked. 
> An alternative solution is that in RequestProcessor, process() can catch the 
> exception and call processException(). It's up to the developer to provide 
> handler to deal with the invalid format. They can implement this proposal there.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.