2013-06-24 2 views
1

У меня есть поле редактирования, которое привязано непосредственно к значению в управляемом компоненте. Значение устанавливается с использованием одной строки языка выражения. Значение в bean-компоненте имеет тип double, который по умолчанию java равен 0.0.Как не иметь значения по умолчанию в editbox, связанного с управляемым компонентом с двойным типом данных?

Код: statusBean.adMoney

В моей XPage, я не хочу, чтобы показать значение по умолчанию. Я хочу, чтобы пользователь вводил значение без 0,00 по умолчанию, я просто хочу показать пустое поле ввода.

Пожалуйста, поделитесь своим лучшим подходом к выполнению этого. Можно ли связать непосредственно с bean-компонентом в SSJS и до сих пор редактировать его? Можно ли сделать оператор if в EL? Мне просто лучше сделать тип данных String и преобразовать значение, когда мне нужно сделать математику против него?

ответ

3

Добавить customConverter в свой inputText поле

<xp:inputText 
    id="inputText1" 
    value="#{statusBean.adMoney}"> 
    <xp:this.converter> 
     <xp:customConverter 
      getAsObject='#{javascript:value=="" ? 0 : parseFloat(value)}' 
      getAsString='#{javascript:value==0 ? "" : value.toString()}' /> 
    </xp:this.converter> 
</xp:inputText> 

Он скрывает всегда значение "0.0". Поле будет пустым в начале и каждый раз, когда пользователь помещает «0» и отправляет.

Update:

В случае «0» является допустимым значением, то это лучшее решение:

Использование в компоненте вместо double поля а Double поле. Поскольку Double является классом, это может быть null. Адаптирование код из выше него будет выглядеть следующим образом:

<xp:inputText 
    id="inputText1" 
    value="#{statusBean.adMoney}"> 
    <xp:this.converter> 
     <xp:customConverter 
      getAsObject='#{javascript:value=="" ? null : parseFloat(value)}' 
      getAsString='#{javascript:value==null ? "" : value.toString()}' /> 
    </xp:this.converter> 
</xp:inputText> 

Но хорошая новость в том, что такое поведение customConverter уже является стандартом для управления inputText. Всякий раз, когда значение поля Double равно null, оно отображается как пустое значение в поле редактирования. Когда пользователь удаляет номер в поле редактирования, поле в bean-компоненте имеет значение null.

Вот почему нам нужен только этот код, если мы используем Double поля вместо double поля:

<xp:inputText 
    id="inputText1" 
    value="#{statusBean.adMoney}"> 
</xp:inputText> 
+0

Кнута, Это делает работу, но ноль является действительной записью. Моя цель - заставить пользователя задуматься об этом, а затем ввести ноль, если это то, что они хотят ввести. Позвольте мне поиграть с ним и посмотреть, смогу ли я сделать эту работу. –

+0

В случае, когда «0» является допустимым значением, вы можете использовать другое значение «скрыть» (например, -1 или -12121212). Установите это значение в свой bean-компонент по умолчанию и используйте его в пользовательском конвертере вместо «0» –

+0

Отличное предложение, значение не может быть отрицательным. Теперь у меня проблема с преобразованием значения в NaN, когда я проверяю форму. Значение требуется, но похоже, что мне придется написать специальный валидатор. –

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