2012-05-31 6 views
1

Это ошибка, которую первый выбирает между точкой или запятой (всегда точкой) в соответствии с используемым f: view locale? Или существует правило, как устанавливать числовые преобразователи.Преобразование конвертера номера игнорирует локаль? ошибка?

1.

<f:converter converterId="javax.faces.BigDecimal"> 
    <f:convertNumber maxIntegerDigits="3" maxFractionDigits="2"/> 
</f:converter> 

2.

<f:convertNumber maxIntegerDigits="3" maxFractionDigits="2"> 
    <f:converter converterId="javax.faces.BigDecimal"/> 
</f:convertNumber> 

ответ

0

Вы не можете вкладывать преобразователи. Они будут применяться только к ближайшему родителю UIComponent в том порядке, в котором они объявлены. Вы также не можете указывать несколько преобразователей. Только последний был бы действительно использован. Каждый компонент ValueHolder может иметь только один преобразователь, в то время как каждый EditableValueHolder может иметь несколько валидаторов.

Просто придерживайтесь <f:convertNumber>. При использовании на входных компонентах, которые уже привязаны к свойству типа BigDecimal, он будет уважать тип.

+0

Спасибо. Это объясняет поведение. – djmj

+0

Добро пожаловать. – BalusC

+0

Было бы намного проще, если jsf автоматически определяет типы с плавающей точкой и используемый язык. Особенно, если определено с помощью convertId с числовым типом. Выглядит так, что плита котла добавляет '' к каждому компоненту с плавающей запятой. – djmj

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