Hi all,
I have implemented a custom Behviour called WhiteboardBehavior extending
the AbstractDefaultAjaxBehavior. In that class I have a static HashMap like
this,
private static ConcurrentHashMap<Integer,Element> elementMap=new
ConcurrentHashMap<Integer,Element>();
In the constructor of my Behavior class I put elements to the map like this,
public WhiteboardBehavior(String whiteboardId,String whiteboardContent){
super();
this.whiteboardId=whiteboardId;
Element element=new Element(whiteboardContent);
if(element!=null){
elementMap.put(element.getId(),element);
}
}
I am trying to execute some JavaScript codes int he renderHead method using
the above added elements. I did it like this,
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component,response);
initReferences(response);
String callbackUrl=getCallbackUrl().toString();
String whiteboardInitializeScript="" +
"callbackUrl='"+callbackUrl+"';\n" +
"whiteboard = bay.whiteboard.Create();\n" +
"elementCollection=whiteboard.getMainCollection();\n"+
"whiteboard.getMainCollection().onChange =
function(element){\n"+
"changedElement=this.getJson(element);\n"+
"Wicket.Ajax.get({u:'"+callbackUrl+"',ep:{editedElement:changedElement}});\n};\n"+
"whiteboard.render(document.getElementById('"+whiteboardId+"'));\n"+
"whiteboard.setBoundaries(0, 0, 0, 0);\n";
//Clearing the whiteboard for first client
IWebSocketConnectionRegistry reg =
IWebSocketSettings.Holder.get(Application.get()).getConnectionRegistry();
if(reg.getConnections(Application.get()).size()==0){
elementMap.clear();
}
* //Loading existing content for clients join after first one
if(!elementMap.isEmpty()){
Map<Integer,Element> sortedElementList = new
TreeMap<Integer,Element>(elementMap);
JSONArray jsonArray=new JSONArray();
for (Element e : sortedElementList.values()) {
jsonArray.put(e.getJSON());
}
whiteboardInitializeScript+="elementCollection.parseJson('"+jsonArray.toString()+"');";
}*
response.render(OnDomReadyHeaderItem.forScript(whiteboardInitializeScript));
}
But when renderHead is executed for the first time, the elementMap is
empty. What has gone wrong here?
Thanks!
--
Regards
Andun S.L. Gunawardana
Undergraduate
Department of Computer Science And Engineering
University of Moratuwa
Sri Lanka
Blog - http://www.insightforfuture.blogspot.com/
LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
Twitter -http://twitter.com/AndunSLG