Dodawanie atrybutów niestandardowych do komponentu autouzupełniania Primefaces w JSF

Pytałem o atrybuty pass through w ainne pytanie i znalazłem, że mogę utworzyć niestandardowy renderer dla<p:autocomplete> komponent, ale problem polega na tym, że mój niestandardowy renderer byłby używany do każdego p: autouzupełnianie w moim projekcie (w całej witrynie). Dlatego zdecydowałem się utworzyć niestandardowy komponent, który się rozszerzaorg.primefaces.component.autocomplete.AutoComplete i dodaje niezbędne atrybuty do pola tekstowego.

Moją pierwszą myślą było dodanie konstruktora, ale wydaje się, że nie działa, ponieważ mapa atrybutów ma w tym momencie wartość null:

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

    public SiteSearch() {
        Map<String,Object> 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");
    }   
}
</code>

Moją inną myślą było pozostawienie tego niestandardowego komponentu pustego (pusta klasa), a następnie określenie niestandardowego rendereraorg.primefaces.component.autocomplete.AutoCompleteRenderer i zmodyfikuj tam atrybuty.

Po tym wszystkim, co zostało powiedziane i zrobione, potrzebuję tylko sposobu, aby te atrybuty były oddzielone od tego jednego pola tekstowego, więc po prostu umieszczenie niestandardowego renderera na p: autoComplete nie zadziała (chyba, że ​​mogę użyć renderType = atrybut dla tego p: autoComplete?).

questionAnswers(1)

yourAnswerToTheQuestion