在GWT ValueTextBox中渲染前导/尾随空格

时间:2014-04-26 20:42:33

标签: gwt

我在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("&nbsp;"); //or sb.append(" ");
            }
            return sb.toString() + object.title;
        }
    });
    setValues(GraphNotes.getCache().getGraph().getAllCategories());
}

}

1 个答案:

答案 0 :(得分:0)

我直接从您分享的link尝试。

请让我知道为什么它不适用于ValueTextBox我可以尝试找出解决方案。

提示:

  • 您可以覆盖ValueTextBox#getValue()方法。

  • 您可以使用ValueTextBox

  • ValueTextBox.getElement().getChildNodes()中添加所有孩子

Element listElement = valueListBox.getElement();

OptionElement optionElement = Document.get().createOptionElement();
optionElement
        .setInnerSafeHtml(SafeHtmlUtils
                .fromTrustedString("&nbsp;&nbsp;&nbsp;you should see 3 spaces before this"));

listElement.appendChild(optionElement);

截图:

enter image description here