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

Robson Miranda updated WICKET-4100:
-----------------------------------

           Description: 
Since in Liferay we can configure the portlets to redirect to view after an 
action request, and, differently from a standard web application, the page is 
generated during the response phase, when a component have some validation 
error in a form, the CheckGroups that are part of this form loose it's values.

This is due to the fact that Check component, in it's onComponentTag() method, 
uses getInputAsArray(), which get the request parameters. However, during the 
render phase, the request parameters are lost when the portlet redirects to 
view after processing an action.

This problem manifests also when using an FileUploadField in the form, 
independently of the redirect-after-post configuration.

To workaround, I changed the onComponentTag of the Check component to use 
CheckGroup's getRawInput() instead of getInputAsArray, since the rawInput is 
also serialized with the component:

if (group.hasRawInput())
                {
                        String[] input;
                        if (group.getRawInput() != null)
                                input = 
group.getRawInput().split(FormComponent.VALUE_SEPARATOR);
                        else
                                input = new String[0];

I do not know if this is the correct workaround, but, using this way, solved 
the problem for me.

  was:
Since in Liferay we can configure the portlets to redirect to view after an 
action request, and, differently from a standard web application, the page is 
generated during the response phase, when a component have some validation 
error in a form, the CheckGroups that are part of this form loose it's values.

This is due to the Check component, in it's onComponentTag() method, uses 
getInputAsArray(), which get the request parameters. However, during the render 
phase, the request parameters are lost when the portlet redirects to view after 
processing an action.

This problem manifests also when using an FileUploadField in the form, 
independently of the redirect-after-post configuration.

To workaround, I changed the onComponentTag of the Check component to use 
CheckGroup's getRawInput() instead of getInputAsArray, since the rawInput is 
also serialized with the component:

if (group.hasRawInput())
                {
                        String[] input;
                        if (group.getRawInput() != null)
                                input = 
group.getRawInput().split(FormComponent.VALUE_SEPARATOR);
                        else
                                input = new String[0];

I do not know if this is the correct workaround, but, using this way, solved 
the problem for me.

    Remaining Estimate:     (was: 24h)
     Original Estimate:     (was: 24h)
    
> When using Wicket in a portlet, CheckGroup loses it`s value when some field 
> is in error
> ---------------------------------------------------------------------------------------
>
>                 Key: WICKET-4100
>                 URL: https://issues.apache.org/jira/browse/WICKET-4100
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket, wicket-portlet
>    Affects Versions: 1.4.18
>         Environment: Liferay 6.0.5 and Liferay 6.0.6 bundled with Tomcat
>            Reporter: Robson Miranda
>              Labels: portlet, wicket
>
> Since in Liferay we can configure the portlets to redirect to view after an 
> action request, and, differently from a standard web application, the page is 
> generated during the response phase, when a component have some validation 
> error in a form, the CheckGroups that are part of this form loose it's values.
> This is due to the fact that Check component, in it's onComponentTag() 
> method, uses getInputAsArray(), which get the request parameters. However, 
> during the render phase, the request parameters are lost when the portlet 
> redirects to view after processing an action.
> This problem manifests also when using an FileUploadField in the form, 
> independently of the redirect-after-post configuration.
> To workaround, I changed the onComponentTag of the Check component to use 
> CheckGroup's getRawInput() instead of getInputAsArray, since the rawInput is 
> also serialized with the component:
> if (group.hasRawInput())
>               {
>                       String[] input;
>                       if (group.getRawInput() != null)
>                               input = 
> group.getRawInput().split(FormComponent.VALUE_SEPARATOR);
>                       else
>                               input = new String[0];
> I do not know if this is the correct workaround, but, using this way, solved 
> the problem for me.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to