在PrimeFaces中selectonemenenu中的双转义标签



在PrimeFaces 'SelectOneMenu中,我使用<please select>这样的选项(通常是占位符),通过f:selectItems从控制器加载,并由SelectOneMenu组件自动转写。在将PrimeFaces 11更新到版本12之后,组件开始在其标签中对字符<,>,&进行双转义,而选项列表仍按预期呈现。(当我点击<please select>时,标签显示&lt;please select&gt;)

我尝试了这些设置的所有组合:

  • 视图:f: selectItems。itemLabelEscaped="true"/"false"
  • 控制器:SelectItem.escape="true"/"false"
  • 控制器:SelectItem。标签是/不是手动转义

属性itemLabelEscaped无效。其他组合的工作方式如下:

下拉菜单选项34

这是一个已知且已修复的问题。在PrimeFaces 13发布之前,您可以MonkeyPatch这个解决方案。

好的,它应该在PF 13.0中被永久修复,这个MonkeyPatch应该可以解决你目前所有的问题。

if (PrimeFaces.widget.SelectOneMenu) {
PrimeFaces.widget.SelectOneMenu.prototype.renderSelectItem = function(item, isGrouped) {
var content = "";
var $item = $(item);
var label;
var title = $item.data("title");
var escape = $item.data("escape");
var cssClass;
if (item.tagName === "OPTGROUP") {
label = $item.attr("label");
if (escape) {
label = $("<div>").text(label).html();
}
cssClass = "ui-selectonemenu-item-group ui-corner-all";
} else { //OPTION
if (escape) {
label = $item.html();
if ($item.text() === "&nbsp;") {
label = $item.text();
}
} else {
label = $item.text();
}

cssClass = "ui-selectonemenu-item ui-selectonemenu-list-item ui-corner-all";
if (isGrouped) {
cssClass += " ui-selectonemenu-item-group-children";
}
}
var dataLabel = escape ? label.replaceAll('"', '&quot;') : this.escapeHTMLIfNecessary(label);
if ($item.data("noselection-option")) {
cssClass += " ui-noselection-option";
}
content += '<li class="' + cssClass + '" tabindex="-1" role="option"';
if (title) {
content += ' title="' + title + '"';
}
if ($item.is(':disabled')) {
content += ' disabled';
}
content += ' data-label="' + dataLabel + '"';
content += '>';
content += label;
content += '</li>';
if (item.tagName === "OPTGROUP") {
content += this.renderSelectItems($item, true);
}
return content;
};
PrimeFaces.widget.SelectOneMenu.prototype.escapeHTMLIfNecessary = function(value) {
return String(value).replace(/[<>"'`=/]/g, function(s) {
return PrimeFaces.entityMap[s];
});
};
}

最新更新



  • All rights reserved © 2023 www.xiaobeizi.cn

  • 首页
NoSelectItem.escapeSelectItem.label显示PF 11中的标签显示PF 12中的标签
2false&lt; &lt;i&gt;italics&lt;/i&gt;<& lt; i> italics& lt;斜体& lt;& lt; i> italics
true< <i>italics</i><& lt; i> italics& lt;& lt; i> italics, lt;打折期,lt; gt; italics&肝移植;打折期/gt;
true&lt; &lt;i&gt;italics&lt;/i&gt;<打折期,lt; gt; italics&肝移植;打折期/gt;, lt;打折期,lt; gt; italics&肝移植;打折期/gt;(更逃脱)