[英]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 </script>
。
我如何使這項工作? 為什么它顯示編碼版本(在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.