Свойства бина не обновляются - PullRequest
0 голосов
/ 06 января 2012

Мой боб - видоискатель.У меня есть простое свойство строки с геттером и сеттером.Получатель работает нормально (проверяется инициализацией свойства), но не установщик.В методе установки я строю Stringbuffer, используя каждый входящий параметр.

Код:

public String getParamval() {
    return paramval;
}

public void setParamval(String paramval) {
    logger.info("Incoming value:" + paramval);
    pvals.append(paramval);
    this.paramval = "VAL";
}

Это неправильно?Я проверил в установщике, чтобы увидеть, передается ли входная строка, но, очевидно, метод вообще не вызывается / не вызывается.В представлении я использую нотацию {{}.

Представление:

<c:forEach items="${gdsiGeodataBean.requiredfields}" var="reqs">
        <h:outputLabel  value="#{reqs}:* " />  
        <pou:inputText value="#{gdsiGeodataBean.paramval}" required="true" requiredMessage="Input is required."/> 
</c:forEach>

И почему я хочу создать строковый буфер в методе установки?потому что входной текст создается динамически на основе динамического списка.У меня есть только одно свойство bean-компонента для привязки.

Я знаю, что могу использовать карту, но по той же причине, что и выше, я не могу обновить значения карты в методе установки.Это связано с вопросом, который я задал здесь Обновление значения карты в управляемом компоненте

1 Ответ

3 голосов
/ 06 января 2012

Даже если подход совершенно неправильный (получатель не вернет правильное значение после того, как вы отправите форму!), И я уже ответил на ваш предыдущий вопрос об использовании карты, установщик должен действительно называться в этом конкретном случае.

То, что сеттер не вызывается, может иметь несколько причин. Самым известным является то, что форма не была помещена внутри <h:form> или что вы неправильно вложили несколько <h:form> друг в друга. Другая причина заключается в том, что компонент ввода или один из его родителей имеет атрибут rendered, который оценивается false во время запроса на отправку.

...