java - ExtJs Combobox 显示字段编码

标签 java javascript html extjs encoding

我有一个 Java 网络应用程序。我有一个实体类(当然是在转换之后)我想在带有 ExtJs 的组合框中使用。我的问题如下:

在 displayField 中可以有带有 html 代码的条目。因此,在使用 flexjson.JSONSerializer 进行序列化期间,我使用 flexjson.HTMLEncoder 使条目在下拉列表中可见(在它使屏幕因未终止的字符串文字而死之前)。到目前为止一切顺利。

editor.myCombo = new Ext.form.ComboBox({
    mode: 'local',
    editable: false,
    forceSelection: true,           
    triggerAction: 'all',
    store: new Ext.data.JsonStore({
        fields: ['myId', 'myName'],
        emptyItem: {'myName' : '...'},
        data: <c:out value="${form.json['myList']}" escapeXml="false"/>         
    }),
    disabled: isEditorDisabled,
    width: 75,
    listWidth: 160,
    displayField: 'myName',
    valueField: 'myId'
});

但是当我从下拉列表中选择一个项目时(所有都正确显示,如 Alfred </script> ),显示字段将显示为:Alfred &lt;/script&gt; .

我该怎么做?为什么它显示编码版本(在 json 请求中检索)而不是 HTML?

最佳答案

尝试在您的配置中包含一个重写的 getDisplayValue 方法。只需将其设置为返回解码值,如下所示:

editor.myCombo = new Ext.form.ComboBox({
    mode: 'local',
    editable: false,
    forceSelection: true,           
    triggerAction: 'all',
    store: new Ext.data.JsonStore({
        fields: ['myId', 'myName'],
        emptyItem: {'myName' : '...'},
        data: <c:out value="${form.json['myList']}" escapeXml="false"/>         
    }),
    disabled: isEditorDisabled,
    width: 75,
    listWidth: 160,
    displayField: 'myName',
    valueField: 'myId',

    // this should return the decoded string instead
    getDisplayValue: function() {
        return Ext.String.htmlDecode(this.value);
    }
});

之所以必须这样做是因为 Ext.form.field.Combo 的实际字段部分实际上是一个 HTML 输入元素,它只会显示纯文本,它不会从中生成 HTML。

关于java - ExtJs Combobox 显示字段编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555745/

相关文章:

java - 在 clojure 中使用 java 结构

java - Android 上的 File、FileReader、BufferedReader 返回 null

java - 如何将 List<Map<String, Object>> 转换为 List<Map<String, String>>

javascript - 页面加载到另一个页面的 ID 时滚动到顶部失败

javascript - 如何同时更改两个选择>选项下拉列表

java - 在 Linux 机器上以 Java 代码运行 .sh 文件

javascript - 找出一个字符在字符串中重复了多少次,并通过动态数字删除那些重复的字符

javascript - 如何在 Vue Js 中做多个过滤器?

javascript - 为什么用户必须在事件(如焦点等)工作之前点击我的应用程序内部?

php - 为什么 bloginfo ('stylesheet_url' ) 没有呈现我的 style.css?