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:
@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");
}
}
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?).