Использование p: inputNumber с BigDecimal и разделителем запятых - PullRequest
0 голосов
/ 24 июня 2019

Я хочу использовать с "," в качестве разделителя, в отношении моих настроек локали. Моя главная проблема заключается в том, что число после разделителя даже не попадает в сам бин.

Я уже пытался добавить decimalSeparator = "," и к, но ничего не изменилось ...

Этот cellEditor включает в себя редактор и вывод:

<p:cellEditor>
                <f:facet name="output">
                    <h:outputText id="grossMoney" value="#{item.grossMoney}">
                        <f:convertNumber locale="hu"/>
                        <f:convertNumber maxFractionDigits="2" minFractionDigits="0"/>
                    </h:outputText>                        
                </f:facet>
                <f:facet name="input">                         
                    <p:inputNumber id="grossMoneyEdit" decimalSeparator="," value="#{item.grossMoney}" >
                        <f:convertNumber locale="hu"/>
                        <!-- <f:convertNumber maxFractionDigits="2" minFractionDigits="0"/> -->                        

                    </p:inputNumber>
                </f:facet>
</p:cellEditor>

Это метод bean, в котором установщик не получает правильное значение:

public void setGrossMoney(BigDecimal grossMoney) {
    if (grossMoney != null && grossMoney != BigDecimal.ZERO) {

        if (vatRate == 0) {
            netUnitPrice = grossMoney;
        } else {
            netUnitPrice = grossMoney.divide(BigDecimal.ONE.add(BigDecimal.valueOf(vatRate).divide(BigDecimal.valueOf(100L))), 3, RoundingMode.HALF_UP);
        }

    } else {
        netUnitPrice = BigDecimal.ZERO;
    }
}

Ожидаемый результат прост: если я введу 100,5, он должен быть преобразован в BigDecimal и вычислен с правильным значением, а на выходной стороне он также должен быть представлен как 100,5.

1 Ответ

1 голос
/ 24 июня 2019

Вы как-то указываете один и тот же аспект несколькими способами: converter, decimalSeparator, language, несколько converters в одном component.

Primefaces p:inputNumber имеет простойlang атрибут uage - вы пробовали это?

<p:inputNumber value="#{myBean.decimalVal}" lang="hu"/>
<h:outputText value="#{myBean.decimalVal}">
   <f:convertNumber locale="hu" />
</h:outputText>

Вы также не устанавливаете поле grossMoney в своем сеттере.Вместо этого вы делаете расчеты netUnitPrice.Вам лучше сделать это в action или (action / ajax) слушателе.Делайте геттеры / сеттеры тривиальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...