2009-12-31 8 views
3

Я хотел бы привязать поле бэкбона к выбранному значению selectOneListbox. Это значение может быть нулевым, поэтому я хочу преобразовать его в 0. Это приведет к тому, что выбранное значение будет выбрано по умолчанию. Я использую JSF2Должен ли я использовать JSTL в JSF 2 xhtml-страницах?

Я планирую сделать это с http://java.sun.com/jstl/core TagLib (с использованием <c:if test="#{empty...}>)

Мой вопрос: есть «чище» способ сделать это. Возможно, JSF (2) связал taglib?

Thankyou!

ответ

3

«JSFish» способ сделать это было бы создать конвертер:

public Object getAsObject(FacesContext context, UIComponent comp, String param) { 
    return (param.equals("0")) ? null : param; 
} 

public String getAsString(FacesContext context, UIComponent comp, Object obj) { 
    return (obj == null) ? "0" : obj.toString(); 
} 
+0

Благодарим за предложение. Но мой бэк-бэк также является моей сущностью, моделью Bean. Я действительно не хочу добавлять переходное поле :) –

+0

В этом случае мое второе предложение, вероятно, было бы лучше. –

3

Просто используйте Long или Integer вместо String в качестве значения элемента. EL автоматически будет вызывать числовые значения (и boolean) из строки/в строку.

+1

Да, это сработает, если он придерживается типов обертки ('Integer' вместо' int') - EL не будет принуждать 'null' к примитиву. – McDowell

Смежные вопросы