2010-02-10 1 views
2

У меня есть страница с выбором радио с 3 вариантами и inputTextArea. Когда я нажимаю кнопку отправки на своей странице, мне нужно сделать некоторые проверки ... Чтобы сделать это, я поставлю валидатор по радио. Проблема в том, что когда выполняется валидатор, мне нужны значения inputTextArea и радио, но они имеют старые значения, а не те, которые были определены на странице до отправки страницы.Обновленные значения JICF UIComponents

Пример: String.valueOf (textArea.getValue()). Equals ("")), когда он сначала суммируется, код String.valueOf (textAreaOcorrencia.getValue()) равен null, но поскольку textArea был пуст, было предложено быть пустой строкой. Когда он отправляется во второй раз, он имеет значение того, что он должен был иметь в первом представлении. Я знаю, что это имеет какое-то отношение к жизненному циклу JSF, но я не знаю, как обновлять эти ценности?

Заранее спасибо ...

ответ

3

В фазе применения значений запроса, представленные значения будут установлены и доступны как submittedValue. Во время фазы валидации представленные значения будут проверены и преобразованы и установлены как value. Компоненты проверяются в верхнем нижнем порядке, поскольку компоненты отображаются в дереве компонентов.

Таким образом, если компонент в вопросе действительно появляется после текущего компонента в дереве компонентов, вам необходимо получить его значение по UIInput#getSubmittedValue() вместо UIInput#getValue().

Чтобы узнать больше о жизненном цикле JSF, вы можете найти this self-practice article полезным.

+0

Привет, я решил свою проблему следующим образом: Вместо того, чтобы получать значение UiComponente таким образом UIComponent UI = view.findComponent (idComponent); if (UI instanceof HtmlSelectOneRadio) { \t HtmlSelectOneRadio radio = (HtmlSelectOneRadio) UI; \t радиоприемник; } ... String.valueOf (radio.getValue()) равно (какой-то предмет) – Moon13

+0

я сделал это:... Итератор это = FacesContext.getCurrentInstance() getExternalContext() getRequestParameterNames(); while (it.hasNext()) { \t Строковый запросParameterName = it.next(); if (requestParameterName.equals (idComponent)) { \t parameterValue = request.getParameter (requestParameterName); \t \t \t \t \t} } где idComponent в этом цикле является HTML тег ID, вы должны указать в JSP, XHTML, любой странице, или еще JSF создаст случайный идентификатор каждый раз, а затем вы выиграли вы не сможете получить UiComponent, который вам нужен. – Moon13

+0

Это действительно другой способ решить (на самом деле: обходной путь) проблему. Перемещение карты параметров запроса сервлетов из глубины под капюшонами JSF, которые сам JSF уже установил в качестве представленного значения компонента. Вы, например, понимаете **, почему ваш путь изначально не работал и почему мое предлагаемое решение устраняет вашу проблему? Все это заставляет меня вздохнуть:/ – BalusC

 Смежные вопросы

  • Нет связанных вопросов^_^