Действие не запускается, когда кнопка включена / отключена с помощью AJAX - PullRequest
0 голосов
/ 22 февраля 2012

Я застрял с проблемой, которая не имеет никакого смысла для меня. У меня есть список, который запускает selectionChange-Events с простым Ajax. Идея состоит в том, что кнопка редактирования не активна, пока не выбран элемент в списке. Поэтому я создал следующий код.

<h:form>
    <h:selectManyListbox value="#{bean.selectedIds}">
        <f:selectItems value="#{bean.listOfItems}" />
        <f:ajax render="edit"
            listener="#{bean.selectionChanged}" />
    </h:selectManyListbox>
    <br />

    <h:commandButton id="add" value="#{msgs.add}"
        action="#{bean.addNew}" />

    <h:commandButton id="edit" value="#{msgs.edit}"
        disabled="#{bean.editButtonDisabled}"
        action="#{bean.edit}" />
</h:form>

Кнопка включена и отключена, как я хочу, но, как оказалось, кнопка редактирования не запускает никаких действий (я добавил sysout к методу add- и edit в bean-компоненте, а метод edit никогда не вызывался ) ... вместо этого HTML меняется. Приведенный выше код вложен в простой div. Когда я нажимаю «изменить», вся форма находится за пределами этого div.

Когда я добавляю это ajax-поведение к кнопке добавления, там происходит то же самое, и наоборот, когда я удаляю отключенный атрибут с кнопки редактирования, все работает ???

Я уже посмотрел ответ BalusC здесь , но не смог найти ни одной ошибки, связанной с этим списком. Нет вложенных форм и так далее ... это просто простая страница с шаблоном.

Я использую Mojarra 2.1.2 на JBoss 7.1.Final.

Любая помощь приветствуется. Спасибо

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Эта проблема описана в пункте 5 ответа, который вы связали.

Атрибут rendered компонента и всех родительских компонентов не должен оцениваться как false во времяэтап применения значений запроса формы отправки запроса.JSF будет затем перепроверять его как часть защиты от несанкционированных / взломанных запросов.Помещение bean-компонента в область видимости и / или проверка того, что вы инициализируете условие в (post) конструкторе bean-компонента, должно его исправить. То же самое относится к атрибуту disabled компонента, который не должен оцениваться как true во время обработки отправки формы.

Предлагаю изменить @RequestScoped наBikeManagementPanelBean до @ViewScoped.

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

попробуйте что-то вроде этого

<h:commandButton id="edit" value="#{msgs.edit}"
    disabled="#{bikeManagementPanelBean.editButtonDisabled eq false}"
    action="#{bean.edit}" />

попробуйте снова обернуть его с помощью <h:panelGroup> и визуализировать вместо кнопки ...

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