Я использую Внешнюю библиотеку, в которой есть много классов с переменными, объявленными так:
private String testBigDecimal;
public String getTestBigDecimal() {
return this.testBigDecimal;
}
public void setTestBigDecimal(BigDecimal testBigDecimal) {
this.testBigDecimal = BigDecimalValidador.validationXpto( testBigDecimal); //return String
}
Обратите внимание, что метод setter () получает значение BigDecimal из-за некоторого процесса проверки и возвращает значение String. Когда они вызываются со стороны сервера, все в порядке! ... но при вызове со стороны представления (страница JSF) с соответствующим BigDecimalConverter я получаю эту ошибку:
javax.faces.component.UpdateModelException: javax.el.PropertyNotWritableException: ... Свойство [testBigDecimal] не доступен для записи для типа ....
После правильного вызова Converter код завершается ошибкой, поскольку он все еще ожидает setTestBigDecimal(Srting testBigDecimal)
метод.
Моя страница JSF : <h:inputText value="#{fooBean.testBigDecimal}" converter="bigDecimalConverter" />
Есть ли способ гарантировать, что JSF может вызвать объявленный установщик (который был "нестандартным способом")? В локальных тестах я изменил тип String testBigDecimal на тип BigDecimal testBigDecimal, и все работает нормально, но я не могу изменить источник Lib, и расширение всех этих классов будет болезненным.
Кто-нибудь может помочь?