Добавление пользовательских атрибутов в компонент автозаполнения Primefaces в JSF

Я спросил об атрибутах передачи в другой вопроси обнаружил, что могу создать собственный рендерер для компонента , но проблема в том, что мой пользовательский рендерер будет использоваться для каждого p:autocomplete в моем проекте (сайт- широкий). Поэтому я решил создать собственный компонент, который расширяет org.primefaces.component.autocomplete.AutoCompleteи добавляет необходимые атрибуты в текстовое поле.

Моя первоначальная мысль заключалась в том, чтобы добавить конструктор, но, похоже, он не работает, потому что карта атрибутов на данный момент пуста:

@FacesComponent("com.mycomponents.SiteSearch")
public class SiteSearch extends AutoComplete {

    public SiteSearch() {
        Map attrs = getAttributes();
        attrs.put("x-webkit-speech", null); 
        attrs.put("x-webkit-grammer", "builtin:search");
        attrs.put("onwebkitspeechchange", "this.form.submit();");
        attrs.put("placeholder", "Enter a Search Term");
    }   
}

Моя другая мысль заключалась в том, чтобы оставить этот пользовательский компонент пустым (пустой класс), а затем указать пользовательский визуализатор, который расширяет org.primefaces.component.autocomplete.AutoCompleteRendererи изменяет там атрибуты.

После того, как все сказано и сделано, мне просто нужен способ сохранить эти атрибуты отдельно от этого одного текстового поля, поэтому простое добавление пользовательского средства визуализации в p:autoComplete не сработает (если, возможно, я не смогу использовать атрибут renderType= для этого p: autoComplete?).

6
задан Community 23 May 2017 в 12:00
поделиться