所以,我有一個非常惱人的問題。我創建JSF自定義組件類:JSF自定義組件屬性設置器沒有調用ValueExpression
@FacesComponent(value = Column.COMPONENT_TYPE)
public class Column extends HtmlColumn {
...
protected enum attr {
sort, search ...
我有getter和setter方法爲所有attr
的,他們看起來像:
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);
}
由於我使用StateHelper界面來設置屬性值一個組件,我期待這些制定者應該與ValueExpression
,但他們不是。
這裏就是我正在嘗試設置排序.xhtml和搜索的片斷屬性:
<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>
它的工作原理,當我使用非價值表達價值觀,但在這種情況下是不是一種選擇。
這裏的標籤庫的一部分,如果這能幫助:
<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>
注意:我們不使用primefaces或任何其他*臉庫DataTable,並將列,因爲它根本就沒有滿足我們的需求。
任何說明爲什麼我的二傳手不工作,以及如何使它工作?謝謝。
這在技術上是重複的http://stackoverflow.com/q/11866981。換句話說,它按預期工作。但是,由於你的問題意味着你有其他問題似乎是由此引起的,所以說出你確切地面對什麼問題以及爲什麼你需要這些設置者被調用可能是有用的。 – BalusC