I need to have a dynamically populated displayPropertyKeys for a list page. I was trying a couple things and eventually got the following tip. Unfortunately it seems not to work
In Session.java
private NSArray<String> listElectronicDocumentDisplayPropertyKeys;
public void setListElectronicDocumentDisplayPropertyKeys(NSArray<String> keyArray) {
listElectronicDocumentDisplayPropertyKeys = keyArray
}
public NSArray<String> listElectronicDocumentDisplayPropertyKeys() {
return listElectronicDocumentDisplayPropertyKeys;
}
With the following rule:
100 : pageConfiguration = 'ListElectronicDocument' => displayPropertyKeys = session.listElectronicDocumentDisplayPropertyKeys [com.webobjects.directtoweb.DelayedKeyValueAssignment]
Jun 25 10:21:46 ec_admin[12000] DEBUG NSLog - ****** fire : 100 : (pageConfiguration = 'ListElectronicDocument') => displayPropertyKeys = session.listElectronicDocumentDisplayPropertyKeys [com.webobjects.directtoweb.DelayedKeyValueAssignment] (100501)
Jun 25 10:21:46 ec_admin[12000] WARN NSLog - <er.extensions.appserver.ERXComponentRequestHandler>: Exception occurred while handling request:
java.lang.ClassCastException: java.lang.String cannot be cast to com.webobjects.foundation.NSArray
[2013-6-25 10:21:46 CEST] <WorkerThread12> java.lang.ClassCastException: java.lang.String cannot be cast to com.webobjects.foundation.NSArray
at er.directtoweb.pages.ERD2WListPage.sortOrderings(ERD2WListPage.java:432)
at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:563)
at er.directtoweb.pages.ERD2WListPage.appendToResponse(ERD2WListPage.java:498)
at com.webobjects.appserver.WOSession.appendToResponse(WOSession.java:1385)
at er.extensions.appserver.ERXSession.appendToResponse(ERXSession.java:571)
at com.webobjects.appserver.WOApplication.appendToResponse(WOApplication.java:1794)
at er.extensions.appserver.ERXApplication.appendToResponse(ERXApplication.java:2005)
at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedPage(ERXComponentRequestHandler.java:190)
at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedSession(ERXComponentRequestHandler.java:235)
at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedApplication(ERXComponentRequestHandler.java:268)
at er.extensions.appserver.ERXComponentRequestHandler._handleRequest(ERXComponentRequestHandler.java:302)
at er.extensions.appserver.ERXComponentRequestHandler.handleRequest(ERXComponentRequestHandler.java:375)
at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
at er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:2109)
at er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:2074)
at com.dsm.ec_admin.Application.dispatchRequest(Application.java:271)
at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
at java.lang.Thread.run(Thread.java:680)
I can sort of understand what is going on: D2W thinks that session.listElectronicDocumentDisplayPropertyKeys is a string instead of evaluating it. But isn't the rule system supposed to recursively resolve this?