Я настраиваю поле ввода для валюты в своем веб-приложении jsf, и у меня есть компонент поддержки, в который записывается значение. Однако преобразователь <f:convertNumber/>
, похоже, не распознает правильный ввод, если он введен пользователем. Исходное значение может быть отправлено, а числа могут быть изменены, но введите значение, подобное
1,00 €
не сработает Я хотел бы сохранить средство форматирования, а также понять, как решить эту проблему.
Я использую JSF 2.3.5-SP2 (Mojarra)
с Wildfly 14.0.1
и Java 10.0.1
Я сузил его до промежутка между числом и символом валюты, но я не знаю, как заставить <f:convertNumber/>
распознать простой пробел в качестве правильного ввода.
После небольшой проверки исходное пространство было идентифицировано как неразрывное пространство
Это мой тестовый код:
test.xhtml
<h:body>
<h:form>
<h:inputText value="#{testModel.number}">
<f:convertNumber type="currency" locale="de_DE" currencyCode="EUR"/>
</h:inputText>
<h:commandButton value="Submit" action="#{testModel.submit}"/>
<h:messages style = "color:red;margin:8px;" />
</h:form>
<h:outputText value="#{testModel.number}"/>
</h:body>
TestModel.java
@Named
@RequestScoped
public class TestModel {
private BigDecimal number;
public String submit(){
return "#";
}
public BigDecimal getNumber() {
if(number==null)number = new BigDecimal("0");
return number;
}
public void setNumber(BigDecimal number) {
this.number = number;
}
}
Если изменить число на 1,00 €, просто уменьшив 0 из 0 , 00 € и заменив его на 1, я получу правильный вывод.
Когда я заменяю пробел
(неразрывный) между числом и символом '€ на простой пробел, сообщение показывает следующее предупреждение:
j_idt3: j_idt4: '0,00 €' konnte nicht als Währungswert интерпретатор werden.
значение '0,00 €' не может быть интерпретировано как значение валюты.