-
FEATURED COMPONENTS
First time here? Check out the FAQ!
1 | initial version | |
Hi
I modified DynamicMenu this way:
...
private Object _selectedItem;
...
private final MenuitemRenderer _defRend = new MenuitemRenderer() {
public void render(Menuitem mi, Object node){
if(node instanceof TreeNode){
TreeNode treeNode=(TreeNode)node;
mi.setLabel(treeNode.getName());
mi.setId(treeNode.getId().toString());
mi.addEventListener("onClick", new EventListener() {
public void onEvent(Event event) throws Exception {
setSelecteditem(event.getTarget().getId());
}
});
}
}
public void setSelecteditem(Object selecteditem){
setSelectedItem(selecteditem);
}
public void render(Menu menu, Object node){
if(node instanceof TreeNode){
TreeNode treeNode=(TreeNode)node;
menu.setLabel(treeNode.getName());
}
}
};
public Object getSelectedItem() {
return _selectedItem;
}
public void setSelectedItem(Object selectedItem) {
_selectedItem = selectedItem;
}
...and this way the component updates the _selectedItem value with the clicked one. But if I would like to bind it to the page like this:
<label id="label" value="${mainMenu.selectedItem}" />
It won't show the value...
I use only the zk-spring variableresolver on the page.
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
Do I need something else too? Maybe fire an Event in setSelectedItem and make the page catch it? If yes, how? Or is there a way to extend my component and use it this way: <dynamicmenu id="mainMenu" autodrop="true" model="${cmsService.menuDao.root}" **onchange="label.value=this.selectedItem" **=""/>
Thanks: Bence