Fix if anyone's interested :

 

public class HtmlDataList extends 
org.apache.myfaces.custom.datalist.HtmlDataList {

    public Object saveState(FacesContext context) {

        Object [] values = new Object[2]; 

        values[0] = super.saveState(context);

        values[1] = getItemStyleClass();

        return values;

    }

    

    public void restoreState(FacesContext context, Object state) {

        Object [] values = (Object[])state;

        super.restoreState(context, values[0]);

        setItemStyleClass((String)values[1]);         

    }

}

 

Then just override it in your config file :

 

<component>

  <component-type>org.apache.myfaces.HtmlDataList</component-type>

  
<component-class>com.sag.ibee.web.gui.component.datalist.HtmlDataList</component-class>
    

</component>

 

Just tested and it works fine for me.

________________________________

De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Envoyé : jeudi 10 avril 2008 15:35
À : users@myfaces.apache.org
Objet : RE: Using t:dataList with Ajax4JSF

 

Ok I found the problem already, this would appear to be a bug with Tomahawk (as 
I have the source attached here). Looks like "itemStyleClass"  was omitted from 
the saveState method. When I was debugging this I noticed the value for it was 
null.

 

Listing from HtmlDataList.java

 

public Object saveState(FacesContext context)

{

    Object values[] = new Object[17];

    values[0] = super.saveState(context);

    values[1] = _layout;

    values[2] = _rowIndexVar;

    values[3] = _rowCountVar;

    values[4] = _onclick;

    values[5] = _ondblclick;

    values[6] = _onkeydown;

    values[7] = _onkeypress;

    values[8] = _onkeyup;

    values[9] = _onmousedown;

    values[10] = _onmousemove;

    values[11] = _onmouseout;

    values[12] = _onmouseover;

    values[13] = _onmouseup;

    values[14] = _style;

    values[15] = _styleClass;

    values[16] = _title;

    return values;

}

 

As you can see itemStyleClass is not there. I'm using MyFaces 1.1.5, not sure 
if this problem exists in 1.2 but we're not upgrading at this point. I guess 
for now I'll just override this component to make it work. I'll see about 
opening a proper bug maybe? I haven't done so before so I'm not sure what the 
process is for that.

 

________________________________

De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Envoyé : jeudi 10 avril 2008 15:23
À : users@myfaces.apache.org
Objet : Using t:dataList with Ajax4JSF

 

Hi,

 

I have a small problem with t:dataList and Ajax4JSF. I'm going to step through 
this in the debugger soon but maybe someone's already encountered this.

 

I have a t:dataList like so:

 

<t:dataList id="dataList" var="element" value="#{mbDataList.folderList}" 
layout="unorderedList" styleClass="DataList" itemStyleClass="DataList">

 

Elsewhere I'm doing some Ajax4JSF action and I pass "dataList" to be rerendered.

 

For the most part it rerenders correctly except it seems to omit the 
'itemStyleClass="DataList"' attribute. The data gets updated, but the 
formatting gets broken since the <li>s don't have their class attribute anymore.

 

Thanks,

Matt

Reply via email to