Вопрос

У меня возникла небольшая проблема с использованием условно оцениваемого выражения в 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 просто пропускает проверку.

Спасибо.

Это было полезно?

Решение

Если входной текст не проходит проверку (этап проверки процесса), то значение mybean.condition не будет обновляться (этап «Обработка обновлений»).Поскольку текстовое поле использует необходимый атрибут, это вполне вероятно.

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top