Also, ich habe ein wirklich nerviges Problem. Ich habe JSF erstellt individuelle Komponentenklasse:JSF Benutzerdefinierte Komponente Attribut-Setter nicht aufgerufen ValueExpression
@FacesComponent(value = Column.COMPONENT_TYPE)
public class Column extends HtmlColumn {
...
protected enum attr {
sort, search ...
Ich habe Getter und Setter für alle der attr
und sie sehen wie folgt aus:
public void setSort(java.lang.Object sort) {
getStateHelper().put(attr.sort, sort);
}
public java.lang.Object getSort() {
return getStateHelper().eval(attr.sort, null);
}
public void setSearch(java.lang.Object search) {
getStateHelper().put(attr.search, search);
}
public java.lang.Object getSearch() {
return getStateHelper().eval(attr.search, null);
}
Da ich verwende StateHelper Schnittstelle Attributwerte festlegen für eine Komponente, ich erwarte, dass diese Setter mit ValueExpression
arbeiten sollten, aber sie sind nicht.
Hier ist Snippet .xhtml wo ich versuche, zu sortieren und die Suche auf Attribute:
<e:dataTable id="datatable" var="entity" value="#{output.entities}"
entryId="#{entity.id}">
<e:column columnHeader="ID" sort="#{entity.id}" search="#{entity.id}">
<h:outputText value="#{entity.id}"/>
</e:column>
Es funktioniert, wenn ich nicht wertExpressionsWerte verwenden, aber in diesem Fall ist keine Option.
Hier ist Teil taglib, ob das hilft:
<tag>
<tag-name>column</tag-name>
<component>
<component-type>component.Column</component-type>
</component>
<attribute>
<name>rendered</name>
<required>false</required>
<type>java.lang.Boolean</type>
</attribute>
<attribute>
<name>visible</name>
<required>false</required>
<type>java.lang.Boolean</type>
</attribute>
<attribute>
<name>sort</name>
<required>false</required>
</attribute>
<attribute>
<name>search</name>
<required>false</required>
</attribute>
<attribute>
<name>columnHeader</name>
<required>false</required>
<type>java.lang.String</type>
</attribute>
...
</tag>
HINWEIS: Wir verwenden keine primefaces oder andere * Gesichter Bibliothek für Datatable und Spalten, weil es einfach ist nicht unsere Bedürfnisse dienen.
Irgendwelche Gründe, warum meine Setter nicht funktioniert und wie es funktioniert? Vielen Dank.
Dies ist technisch ein Duplikat http://stackoverflow.com/q/11866981. Mit anderen Worten, es funktioniert wie erwartet. Aber da Ihre Frage impliziert, dass Sie andere Probleme haben, die dadurch verursacht werden, ist es vielleicht nützlich zu sagen, welche Probleme genau Sie hatten und warum genau diese Setter aufgerufen werden müssen. – BalusC