Hi Daniel,
I've had the same problem quite some time ago. I wasn't able to program a general solution but managed to find a quick workaround by overriding the exporter (just as Björn mentioned):
Code:
@Override
protected Exporter createExporter() {
return new Exporter() {
/**
* @param ci
* @param nullValue
* @param asDisplayString
* true ==> nice formatting of string, false ==> no formatting but native format ==> usable for sorting etc.
* @return
*/
protected String getToBeAccessedNodeStringValue(ColumnInfo ci, String nullValue, boolean asDisplayString) {
if (ci.getSortreference() == null)
return nullValue;
try {
FacesContext fc = FacesContext.getCurrentInstance();
Object value;
if (ci.getSortreference().equals("orderMesstartForSorting")) //TODO solve generically: don't take sortReference but valueExpression
value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression("ppcd.startdate"));
else
value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression(ci.getSortreference()));
if (value == null)
return nullValue;
if (asDisplayString) {
String nodeExpression = "#{" + m_objectBinding + ".toBeAccessedNode}";
return ValueManager.convertObject2DisplayString(value, ci.getFormatValue(nodeExpression), ci.getFormatmaskValue(nodeExpression),
ci.getTimezoneValue(nodeExpression), true);
} else
return ValueManager.convertObject2ValueString(value);
} catch (Throwable t) {
CLog.L.log(CLog.LL_WAR, "Problems accessing value via sortreference: " + ci.getSortreference());
return nullValue;
}
}
};
}
Regarding the original CC-implementation, I only changed these 4 lines of code:
Code:
if (ci.getSortreference().equals("orderMesstartForSorting")) //TODO solve generically: don't take sortReference but valueExpression
value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression("ppcd.startdate"));
else
value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression(ci.getSortreference()));
where "orderMesstartForSorting" is the sortreference and "ppcd.startdate" is the value to be displayed.
Regards, Ernst