If you want, you don't even have to implement ITableColumnModel.
just do something like:
.html:
<table jwcid="@contrib:Table" source="ognl:theSource"
columns="ognl:columnList"/>

.java:

public List getColumnList() {
    List ret = new ArrayList();
    String columnId="callPointH";
    String columnHeader="Call Point H";
    //not that the root of your ognl expression is the current row obj.
    String ognlExpression = "callPoinH";
    boolean sortable=true;
    ret.add(new
ExpressionTableColumn(columnId,columnHeeader,ognlExpression,sortable);
    return ret;
}

Ryan Cuprak wrote:
> Hello, 
>  I am working creating a table for which the number of columns is dynamic 
> (user can control which columns they want displayed). What is the proper 
> approach for implementing the behavior? 
> 
>   Thus far I created an implementation of ITableColumnModel which then 
> returns the custom set of columns. I initially returned SimpleTableColumn 
> instances but was getting a 'Unable to read OGNL expression '<parsed OGNL 
> expression>' of [EMAIL PROTECTED]/image/bands.tableColumns]: 
> tableColumnRenderer' exception (src below). After getting this exception I 
> thought my approach might be wrong. Looking over the code I was a little 
> puzzled on how my column would extract the values from the model etc. Looking 
> through the contrib:table source I chanced upon 'ExpressionTableColumn'. 
> There are no java docs so I am not quiet sure how it is supposed to be used. 
> From the title I 'think' this would take ognl expressions and retrieve the 
> values from my data model? However, I am not quiet sure how to contruct an 
> instance - where/what do I use for an ExpressionEvaluator? 
> 
> Page spec:
>      <component id="bands" type="Contrib:Table">
>         <binding name="source" value="tableModel"/>
>         <binding name="columns" value="ognl:tableColumnModel"/>
>         <binding name="rowsClass" value="beans.evenOdd.next"/>
>         <binding name="columnsClass" value="literal:title"/>
>     </component> 
> 
> My TableColumnModel (only one field, was trying to get it working first..):
>  public class BandSummaryColumnModel implements ITableColumnModel {
> 
>     private static final Logger logger = 
> Logger.getLogger(BandSummaryColumnModel.class);
> 
>     private Map<String, ITableColumn> _columns;
> 
>     public BandSummaryColumnModel() {
>         if(logger.isDebugEnabled()) logger.debug("Instantiating 
> BandSummaryColumnModel");
>         _columns = new HashMap<String,ITableColumn>();
>         _columns.put("callPointH",new 
> SimpleTableColumn("callPointH","callPointH",true));
>     }
> 
>     public int getColumnCount() {
>         if(logger.isDebugEnabled()) logger.debug("Column count: " + 
> _columns.size());
>         return _columns.size();
>     }
> 
>     public ITableColumn getColumn(String string) {
>         if(logger.isDebugEnabled()) logger.debug("Column requested: " + 
> string);
>         return _columns.get(string);
>     }
> 
>     public Iterator getColumns() {
>         if(logger.isDebugEnabled()) logger.debug("Column iterator requested");
>         return _columns.entrySet().iterator();
>     }
> }
> 
>  Thanks!
>  Ryan
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to