我想知道如何使用I18N构建TreeItem并且没有针对菜单项的不同标记。
如果我像这样构建一个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模式解决这个问题,如果是这样,那么它是如何工作的?
答案 0 :(得分:0)
在TreeItem
上有2种方法setUserObject(Object userObject)
和getUserObject
。您可以使用这些ID或设置ID,您可以使用它来检查。但是,我不知道你是如何从SelectionEvent
到ValueChangeEvent
的。你在两者之间丢失了一些信息。
答案 1 :(得分:0)
为什么不将附加到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);
}
或者我错过了什么?