我有一個視圖(.xhtml),該視圖包含一個dataTable。在dataTable裏面有一個名爲「Type」的列對應於屬性「CTYPE」。 CTYPE存儲三種類型的值:'AB','BC'和'CD'。然後我有一個Enum,將這些值轉換爲更適合的字符串。 例如:'AB' - >'我的字符串測試1'等,其中'AB'是關鍵字,'我的字符串測試1'是對應的描述(值)。 上面提到的dataTable的列(「Type」)顯示了每個鍵的描述,即代替'AB'它顯示'My String test 1',依此類推。 該列是一個sorteableColumn,並具有按類型對列進行排序的sortKey ='CTYPE'。問題是我想按描述排序列而不是按鍵。所以,我想按照'我的字符串測試1','我的字符串測試2'...而不是'AB','BC'... 爲了實現這一點,我的sortKey必須有權訪問Enum並將密鑰翻譯成相應的描述。但是,我並沒有設法做到這一點。訪問xhtml視圖內的Enum
我.xhtml:
<p:column>
<f:facet name="header">
<ccomponent:sortableColumn model="#{typeSearchM}"
controller="#{typeSearchC}"
label="#{msg['labels.types.type_method']}"
sortKey="CTYPE" />
</f:facet>
<h:outputText value="#{msg[typeDTO.getTypesMethod()]}" />
</p:column>
我TypeDTO.java:
public String getTypesMethod() {
return DestinationTypeDomain.getDescByKey(typeData.getCType());
}
其中DestinationTypeDomain是轉化的關鍵描述枚舉。 我想這是改變我SORTKEY喜歡的東西:
sortKey="#{DestinationExpeditionDomain.getDescByKey(typeDTO.destinationDesc)}"
我如上面一樣。你的回答是有道理的。當頁面加載一切都是正常的(和以前一樣)。但是,當我嘗試對列進行排序時,表變爲空,並且在控制檯上顯示此錯誤:「」任何想法爲什麼? –
Rita
2014-09-08 10:09:32
我認爲這可能是因爲參數而發生的。 – Rita 2014-09-08 10:18:16
您需要EL 2.2才能在EL表達式中使用參數。看看[this](http://stackoverflow.com/a/3284328/1199132)。 – 2014-09-08 10:45:05