Условно требуется проверка JSF в форме a4j - PullRequest
2 голосов
/ 25 мая 2009

У меня небольшая проблема с использованием условно вычисленного выражения в jsf / a4j

Вот мой код

<a4j:form>
         <h:inputText id="id1" value="#{mybean.myvalue}" size="1"
                   required="#{not mybean.condition}"
                   rendered="#{not mybean.condition}"
                   requiredMessage="Put a number in here" />

           <h:selectBooleanCheckbox value="#{mybean.condition}">
                <a4j:support event="onclick" reRender="id1"/>
            </h:selectBooleanCheckbox>

<a4j:commandButton action="#{mybean.myaction}" value="Do something" />

 </a4j:form>

Логический флажок условно включает / отключает проверку.

Это не работает: a4j: commandButton просто пропускает проверку.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 25 мая 2009

Если inputText не проходит проверку (фаза проверки процесса), то значение mybean.condition не будет обновлено (фаза обновления процесса). Поскольку в текстовом поле используется атрибут required , это весьма вероятно.

Жизненный цикл из документа RichFaces:

alt text
(источник: jboss.org )

Если какая-либо фаза JSF не пройдена, жизненный цикл переходит к ответу рендеринга, чтобы избежать работы с неверным вводом. Вы можете использовать теги h: message и h: messages для просмотра зарегистрированных ошибок (хотя, поскольку вы используете AJAX, вам придется поместить их во что-то, что -rendered.

Я предполагаю, что если вы установите атрибут ajaxSingle для тега aj4: support , вы получите желаемое поведение. В документации сказано, что при этом будет отправлено только значение для элемента управления, поэтому текстовое поле не будет задействовано на этапах Применить значения запроса / Проверка процесса / Обновления процесса.

0 голосов
/ 14 мая 2010

Какова область применения бобов? Если это область запроса, то при щелчке на кнопке его значение будет сброшено, и поле ввода может быть обработано вообще (если визуализация преобразуется в «ложь»).

...