TreeItem与I18N GWT
问题描述:
我想知道如何用I18N构建TreeItem,并且菜单项没有不同的标记。TreeItem与I18N GWT
如果我建立这样一个TreeItem:
@UiField
Tree tree;
TreeItem customer = new TreeItem(customerGroup");
customer.addItem("searchCustomer");
customer.addItem("create");
customer.setState(true);
tree.clear();
tree.addItem(customer);
@UiHandler("tree")
public void onSelection(SelectionEvent<TreeItem> event) {
eventBus.fireEvent(event);
}
的ValueChange令牌,我得到当用户点击“创建”节点是“创建”,然后我得到这样的代码
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if(token.equals("create")
{
CreateCustomerView create = new CreateCustomerView(eventBus,
customerService);
content.setContent(create);
}
...
但是如果我想在TreeItem节点中使用不同的语言,那么我想要其他的文本作为标记,也许是一个id。我可以使用MVP模式中的Places模式来解决这个问题吗?如果是这样的话,它是如何工作的?
答
在TreeItem
有2个方法setUserObject(Object userObject)
和getUserObject
。你可以使用这些或设置一个Id,你可以用它来检查。但是,我不明白你是如何从SelectionEvent
到ValueChangeEvent
。你之间会丢失一些信息。
答
为什么不将以前添加的项目与SelectionEvent
附加的选定项目进行比较?类似这样的:
public void onModuleLoad() {
Tree tree = new Tree();
final TreeItem item1 = new TreeItem("item 1");
TreeItem item2 = new TreeItem("item 2");
TreeItem item3 = new TreeItem("item 3");
TreeItem item4 = new TreeItem("item 4");
tree.addItem(item1);
tree.addItem(item2);
tree.addItem(item3);
tree.addItem(item4);
tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
@Override
public void onSelection(SelectionEvent<TreeItem> event) {
if (event.getSelectedItem().equals(item1)) {
Window.alert("item1 selected");
}
}
});
RootPanel.get().add(tree);
}
或者我错过了什么?
eventBus.fireEvent(event);在树中触发一个SelectionEvent,它被另一个类中的onValueChange事件拾取 – 2010-11-07 11:29:53
感谢Hilbrand,您的解决方案已运行。在创建treeItem时设置userObject,并在从onSelection事件方法创建histroyToken时进行拾取。 – 2010-11-08 12:26:03