Adicionando Atributos Personalizados ao Componente de AutoCompletar Primefaces no JSF
Eu perguntei sobre passar atributos em umpergunta diferente e descobri que eu poderia criar um renderizador personalizado para o<p:autocomplete>
componente, mas o problema é meu renderizador personalizado seria usado para cada p: autocomplete no meu projeto (todo o site). Por isso, escolhi criar um componente personalizado que se estendeorg.primefaces.component.autocomplete.AutoComplete
e adiciona os atributos necessários à caixa de texto.
Meu pensamento inicial foi adicionar um construtor, mas parece não funcionar porque o mapa de atributos é nulo neste momento:
@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");
}
}
Meu outro pensamento foi deixar este componente personalizado vazio (classe vazia) e, em seguida, especificar um renderizador personalizado que se estendeorg.primefaces.component.autocomplete.AutoCompleteRenderer
e modifique os atributos lá.
Depois de tudo dito e feito, eu só preciso de uma maneira de manter esses atributos separados para essa caixa de texto, então apenas colocar um renderizador customizado no p: autoComplete não vai funcionar (a menos que eu possa usar renderType = attribute para este p: autoComplete?).