Hinzufügen von benutzerdefinierten Attributen zur Autocomplete-Komponente von Primefaces in JSF
Ich habe nach Durchgangsattributen in a gefragtandere Frage und fand ich konnte einen benutzerdefinierten Renderer für die erstellen<p:autocomplete>
Das Problem ist jedoch, dass mein benutzerdefinierter Renderer für jedes p: autocomplete in meinem Projekt (site-wide) verwendet wird. Aus diesem Grund habe ich mich entschieden, eine benutzerdefinierte Komponente zu erstellen, die erweitert wirdorg.primefaces.component.autocomplete.AutoComplete
und fügt die erforderlichen Attribute zum Textfeld hinzu.
Mein erster Gedanke war, einen Konstruktor hinzuzufügen, aber er scheint nicht zu funktionieren, da die Attributzuordnung an dieser Stelle null ist:
<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>
Mein anderer Gedanke war, diese benutzerdefinierte Komponente leer zu lassen (leere Klasse) und dann einen benutzerdefinierten Renderer anzugeben, der erweitert wirdorg.primefaces.component.autocomplete.AutoCompleteRenderer
und dort die Attribute ändern.
Nachdem alles gesagt und getan ist, brauche ich nur eine Möglichkeit, diese Attribute für dieses eine Textfeld getrennt zu halten, damit das Hinzufügen eines benutzerdefinierten Renderers zum p: autoComplete nicht funktioniert (es sei denn, ich kann das renderType = -Attribut für dieses verwenden p: autoComplete?).