[ 
http://issues.apache.org/jira/browse/MYFACES-214?page=comments#action_65833 ]
     
Philipp Ahlner commented on MYFACES-214:
----------------------------------------

Since submittedValue should be a String some converting-jobs are to do. A 
improved patch is following, I hope someone is interested.

/**
 * 
 */
package de.interforum.jsf.myfaces.ext.tabbedpane;

import java.util.Iterator;

import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import org.apache.myfaces.custom.tabbedpane.HtmlTabbedPaneRenderer;

/**
 * @author ahlner
 */
public class TabbedPaneRenderer extends HtmlTabbedPaneRenderer
{

    public void decode(FacesContext facesContext, UIComponent uiComponent)
    {
        super.decode(facesContext, uiComponent);
        fakeSubmittedValue(facesContext, uiComponent);
    }

    private void fakeSubmittedValue(FacesContext context, UIComponent component)
    {
        if (component instanceof UIInput)
        {
            UIInput input = (UIInput) component;

            // set initial to the value-property
            if (input.getSubmittedValue() == null)
            {
                Converter converter = input.getConverter();
                Object value = input.getValue();
                if (converter == null && value != null)
                {

                    try
                    {
                        converter = context.getApplication().createConverter(
                                value.getClass());
                    } catch (FacesException e)
                    {
                        context.getExternalContext().log(
                                "No converter for class "
                                        + value.getClass().getName()
                                        + " found (component id="
                                        + component.getId() + ").", e);
                    }
                }

                if (converter == null)
                {
                    if (value != null)
                    {
                        if (value instanceof String)
                        {
                            input.setSubmittedValue(value);
                        }
                        else
                        {
                            input.setSubmittedValue(value.toString());
                        }
                    }
                    else
                    {
                        // the value-property was null, init with an empty
                        // string by default
                        input.setSubmittedValue("");
                    }
                }
                else
                {
                    Object convertedValue = converter.getAsString(context, 
component, value);
                    input.setSubmittedValue(convertedValue);
                }
            }
        }

        // process children
        Iterator children = component.getChildren().iterator();
        while (children.hasNext())
        {
            Object object = children.next();
            UIComponent child = (UIComponent) object;
            fakeSubmittedValue(context, child);
        }
    }
}

> TabbedPane : wrong validation behavior
> --------------------------------------
>
>          Key: MYFACES-214
>          URL: http://issues.apache.org/jira/browse/MYFACES-214
>      Project: MyFaces
>         Type: Bug
>     Versions: 1.0.9 beta
>  Environment: MyFaces 1.0.9rc3, Tomcat 5.0.27, j2sdk1.5.0_01
>     Reporter: Philipp Ahlner

>
> Requirements for reproduction:
> - min. two tabs with min. one required Input-Fields
> - a submit button on each tab
> - an "<h:messages styleClass="errors" showDetail="true" 
> showSummary="true"/>"-tag to see all validation errors regardless which tab 
> is selected
> Expected behavior:
> - if the submit button is pressed, !both! fields should be validated 
> regardless which tab is selected
> Steps to reproduce:
> 1. start a new session
> 2. let the required text fields empty
> 3. press the submit button in the first tab.
> Behavior:
> Only the field(s) on the first tab is validated.
> The interesting effect:
> Select the second tab and press submit. The validation errors on !both! tab 
> occours. If the tab was 
> activated at least one time in a new session, all fields were validated 
> correctly.
> Further informations: 
> http://www.mail-archive.com/users%40myfaces.apache.org/msg03525.html

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to