1

迭代 POJO 集合的JSF -2 标记 f:selectItemsvalue提供参数和itemLabel

这些生成<option>表单的元素

<option value="value">itemLabel</option>

现在, HTML 提供了另一个名为标签的属性label<option>

<option value="value" label="something_else">itemLabel</option>

但我看不出如何通过 JSF 来使用它。问题的背景是我的 itemLabels 使用了本地化语言,但希望 Select2(它取代了<select>此处)也能够自动完成并匹配英文名称。我想隐藏在label属性中。

有任何想法吗?

4

1 回答 1

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 的英语和挪威语输入自动补全,而不管选择的本地化。

于 2013-07-08T21:37:40.260 回答