簡體   English   中英

ExtJs Combobox displayField編碼

[英]ExtJs Combobox displayField encoding

我有一個java Web應用程序。 我有一個實體類(當然在轉換后)我想在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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM