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?).