У меня есть представление (.xhtml), и этот вид содержит dataTable. Внутри этой таблицы данных есть один столбец с именем «Тип», который соответствует атрибуту «CTYPE». CTYPE хранит три типа значений: «AB», «BC» и «CD». Затем у меня есть Enum, который переводит эти значения в более подходящие строки. Ex: 'AB' -> 'My String test 1' и т. Д., Где «AB» - это ключ, а «My String test 1» - соответствующее описание (значение). Столбец упомянутой выше таблицы данных («Тип») показывает описание каждого ключа, то есть вместо «AB» он показывает «My String test 1» и так далее. Этот столбец является sorteableColumn и имеет sortKey = 'CTYPE', который сортирует столбец по типу. Проблема в том, что я хочу сортировать столбец по описанию, а не по ключу. Итак, я хочу сортировать по «My String test 1», «My String test 2» ... вместо «AB», «BC» ... Чтобы достичь этого, мой sortKey должен иметь доступ к Enum и перевести ключ в соответствующее описание. Однако мне это не удается.Доступ к Enum внутри представления xhtml
Мои .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
Я думаю, что это может произойти из-за параметра. – Rita
Вам нужно, чтобы EL 2.2 был доступен для использования параметров в выражениях EL. Посмотрите на [это] (http://stackoverflow.com/a/3284328/1199132). –