迭代POJO集合的JSF-2 tag f:selectItems提供参数value
和itemLabel
这些会生成
形式的<option>
个元素
<option value="value">itemLabel</option>
现在,HTML offers another attribute为label
代码
<option>
<option value="value" label="something_else">itemLabel</option>
但是我无法通过JSF看到如何使用那个。问题的背景是我的本地语言中的itemLabels,但是想要Select2(这里替换<select>
)以便能够自动完成并匹配英文名称。我希望隐藏在label
属性中。
有什么想法吗?
答案 0 :(得分:0)
我通过我认为相当肮脏的技巧解决了这个问题:
我使用f:selectItems
生成了以下选项:
<h:selectManyMenu class="MySelectField" id="MySelectField" name="input"
value="#{...}" converter="...">
<f:selectItems value="#{...}" var="..."
itemLabel="Localized_Label|EnglishLabel/NorwegianLabel"
/>
</h:selectManyMenu>
制造
<option value="SOME_CODE">Localized_Label|EnglishLabel/NorwegianLabel</option>
然后我将我要隐藏的部分隐藏到label
属性中(并配置了Select2以匹配用户输入与所述属性):
$(document).ready(function() {
$(".MySelectField option").each(function(){
tmp=$(this).text().split("|");
$(this).attr('label',tmp[1]);
$(this).text(tmp[0]);
});
$(".MySelectField").select2({
matcher: function(term, text, opt) {
return text.toUpperCase().indexOf(term.toUpperCase())>=0
|| opt.attr("label").toUpperCase().indexOf(term.toUpperCase())>=0;
}
});
});
导致
<option value="SOME_CODE" label="EnglishLabel/NorwegianLabel">Localized_Label</option>
在其上面调用Select2。
现在,无论选择何种本地化,用户都可以获得英语和挪威语输入的Select2自动完成功能。