Я спросил об атрибутах передачи в другой вопроси обнаружил, что могу создать собственный рендерер для компонента
, но проблема в том, что мой пользовательский рендерер будет использоваться для каждого 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?).