我在GWT中使用特定类型扩展ValueListBox。构造函数需要实现
public String render(MyObject object)
我尝试返回的只是其中一个属性object.title
,前面有一定数量的空格。问题是这些似乎被修剪并且在呈现ListBox项时不会显示。 &安培;的NBP;并且HTML也不起作用。
我找到了一个适用于常规GWT ListBox(Whitespaces between words trimmed in ListBox gwt?)的解决方案,但它不适用于ValueTextBox。这个问题有解决方案吗?
编辑:
好吧,现在列表框中的对象由setAcceptableValues()
定义,它们由render()
(下面的代码)呈现。前者,追溯到ValueListBox类,将每个值放在一个映射中,然后调用getListBox().addItem(renderer.render(value))
通过使用你的解决方案可以绕过这个,但是当我尝试选择元素时,我得到一个indexoutofrage异常,因为项目尚未在ValueListBox
类中正确添加(私有属性List<T> values
)
省略了实际的类(render(Category object, Appendable appendable
):
public class CategoryListBox extends GraphNotesListBox<Category>{
public CategoryListBox(){
super(new Renderer<Category>() {
@Override
public String render(Category object) {
StringBuilder sb = new StringBuilder();
//nbr of parents determine the indentation
int size = GraphNotes.getCache().getGraph().getParentChain(object.parent).size();
for (int i = 0; i < size; i++){
sb.append(" "); //or sb.append(" ");
}
return sb.toString() + object.title;
}
});
setValues(GraphNotes.getCache().getGraph().getAllCategories());
}
}
答案 0 :(得分:0)
我直接从您分享的link尝试。
请让我知道为什么它不适用于ValueTextBox
我可以尝试找出解决方案。
提示:
您可以覆盖ValueTextBox#getValue()
方法。
您可以使用ValueTextBox
ValueTextBox.getElement().getChildNodes()
中添加所有孩子
Element listElement = valueListBox.getElement();
OptionElement optionElement = Document.get().createOptionElement();
optionElement
.setInnerSafeHtml(SafeHtmlUtils
.fromTrustedString(" you should see 3 spaces before this"));
listElement.appendChild(optionElement);
截图: