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]