Как передать новое значение в поле, где его рендеринг контролируется логическим свойством в JSF? - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть h: panelGroup, которая отображает дату вывода на основе значения логического свойства. Когда форма отправляется с новым значением даты budgetEffectiveDateText, новое значение поступает как null в контроллер. Когда свойство rendered="#{orderController.reviseMode}" удаляется из PanelGroup или когда я использую rendered="true", я получаю новую заданную дату для поля. Как я могу передать новое значение для поля с визуализированным свойством, установленным логическим свойством бина?

<h:panelGroup id="budgetPanel" rendered="#{orderController.reviseMode}">
    <tr>
        <td class="required_field_medium" >
            <h:outputText value="Budget Effective Date"></h:outputText>
        </td>
        <td>
            <h:inputText id="budgetEffectiveDateText" value="#{orderController.order.ioBudget.budgetEffectiveDate}"
                         converter="DateTimeConverter"/>
        </td>
    </tr>

1 Ответ

0 голосов
/ 03 февраля 2012

Атрибут rendered переоценивается при отправке формы, а также является частью защиты от несанкционированных запросов. Таким образом, если bean-компонент является областью запроса и логическое значение reviseMode инициализируется на основе некоторого значения области запроса, которое отсутствует при отправке формы, тогда по умолчанию он будет равен false, и тогда JSF не будет обрабатывать входные данные, содержащиеся в группе панелей. .

Непонятно, какую версию JSF вы используете (пожалуйста, укажите это в будущих вопросах), но если это JSF 2.x, тогда решение простое: поместите компонент в область представления вместо области запроса.

@ManagedBean
@ViewScoped
public class OrderController {
    // ...
}

Если вы все еще используете JSF 1.x, то есть несколько способов, в зависимости от того, как именно вы инициализируете условие reviseMode. Один из лучших способов - просто смоделировать область просмотра JSF 2.x, используя тег <t:saveState> Томагавка или тег <a4j:keepAlive> RichFaces.

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