You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Mathias Broekelmann (JIRA)" <my...@incubator.apache.org> on 2005/05/01 14:42:08 UTC

[jira] Commented: (MYFACES-222) UIColumns loses rowIndex on renderColumnBody

     [ http://issues.apache.org/jira/browse/MYFACES-222?page=comments#action_64203 ]
     
Mathias Broekelmann commented on MYFACES-222:
---------------------------------------------

This bug is allready fixed. See http://issues.apache.org/jira/browse/MYFACES-174
The final (beta) 1.0.9 should include the fix but not the 1.0.9rc3 so make sure you are using the final version.

> UIColumns loses rowIndex on renderColumnBody
> --------------------------------------------
>
>          Key: MYFACES-222
>          URL: http://issues.apache.org/jira/browse/MYFACES-222
>      Project: MyFaces
>         Type: Bug
>     Versions: 1.0.9 beta
>  Environment: myfaces-1.0.9
>     Reporter: Mike Kienenberger

>
> I'm using UIColumns (myfaces-1.0.9), and I've hit what appears to be a bug.
> I can initialize my page, and then update my page, but I get an
> IllegalArgumentException("row is unavailable") exception when the page
> is being rendered (but after all of the actions for that page have
> been processed).
> The problem appears to be in here:
> HtmlTableRendererBase.encodeChildren() contains:
>                            columns.setRowIndex(k);
>                            String columnStyle = styles.getColumnStyle(j);
>                            renderColumnBody(facesContext, writer,
> uiData, child, columnStyle);
> k starts out as 0.  renderColumnBody() eventually calls
>        UIColumns(UIData).isAllChildrenAndFacetsValid() line: 646
>        UIColumns(UIData).encodeBegin(FacesContext) line: 594
>        RendererUtils.renderChild(FacesContext, UIComponent) line: 482
>        HtmlTableRenderer(HtmlTableRendererBase).renderColumnBody(FacesContext,
> ResponseWriter, UIData, UIComponent, String) line: 205
> and isAllChildrenAndFacetsValid cycles through the rowIndexes, and
> ends up setting it to -1.
> And then sometime later my own code gets called via
>        HtmlSelectBooleanCheckbox(UIOutput).getValue() line: 75
>        RendererUtils.getBooleanValue(UIComponent) line: 213
>        HtmlCheckboxRenderer(HtmlCheckboxRendererBase).encodeEnd(FacesContext,
> UIComponent) line: 94
>        HtmlSelectBooleanCheckbox(UIComponentBase).encodeEnd(FacesContext) line: 341
>        RendererUtils.renderChild(FacesContext, UIComponent) line: 491
>        RendererUtils.renderChildren(FacesContext, UIComponent) line: 468
>        RendererUtils.renderChild(FacesContext, UIComponent) line: 489
>        HtmlTableRenderer(HtmlTableRendererBase).renderColumnBody(FacesContext,
> ResponseWriter, UIData, UIComponent, String) line: 205
> but by this point, the rowIndex is -1 rather than the original 0 value
> it should have been.
> I "fixed" this in a 2005-04-29 CVS checkout with the following patch.
> However, I don't claim to know if this will break something else.
> Index: UIColumns.java
> ===================================================================
> RCS file: /home/cvspublic/incubator-myfaces/src/share/org/apache/myfaces/component/UIColumns.java,v
> retrieving revision 1.1
> diff -u -r1.1 UIColumns.java
> --- UIColumns.java	29 Mar 2005 11:40:50 -0000	1.1
> +++ UIColumns.java	29 Apr 2005 22:27:45 -0000
> @@ -15,7 +15,10 @@
>   */
>  package org.apache.myfaces.component;
>  
> +import java.io.IOException;
>  import javax.faces.component.UIData;
> +import javax.faces.context.FacesContext;
>  
>  /**
>   * @author Mathias Broekelmann (latest modification by $Author: matzew $)
> @@ -53,4 +56,18 @@
>    {
>      return COMPONENT_FAMILY;
>    }
> +  
> +	public void encodeBegin(FacesContext context) throws IOException
> +	{
> +		int savedRowIndex = getRowIndex();
> +		super.encodeBegin(context);
> +		setRowIndex(savedRowIndex);
> +	}
> +
> +	public void encodeEnd(FacesContext context) throws IOException
> +	{
> +		int savedRowIndex = getRowIndex();
> +		super.encodeEnd(context);
> +		setRowIndex(savedRowIndex);
> +	}
>  }

-- 
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