почему этот код jsf / ajax не передает значения? - PullRequest
1 голос
/ 07 июня 2011

Я добавляю сюда упрощенную версию кода, которая не работает для меня.Здесь происходит то, что есть две формы.

Первая форма содержит axaxified <h:commandLink> (с использованием <f:ajax>) Вторая форма содержит форму со значениями.

Когда <h:commandLink> нажата, значения во второй форме должны быть отправлены.

На практике происходит то, что значения извлекаются (функция-получатель запускается), но не отправляются (функция-установщик никогда не запускается).

<f:ajax> работает, потому что я вижу, как работает метод слушателя, и вторая форма действительно перерисовывается после нажатия <h:commandLink>, но, опять же, функции установки никогда не запускаются.

<body>
    <h:form prependId="false">
        <h:panelGroup >
            <h:commandLink >
                <f:ajax event="click"
                    execute=":form_with_values_to_update" render=":form_with_values_to_update"
                    listener="#{mrBean.clickListenerAction}" />
                Do something
            </h:commandLink>
        </h:panelGroup>
    </h:form>

    <h:panelGroup>
        <h:form id="form_with_values_to_update">
            <fieldset>
                <ui:repeat value="#{mrBean.aMemberOfBean.aListInAMemberOfBean}" var="listItem">
                    <h:panelGroup>
                        <h:outputText value="#{listItem.label}" />
                        <h:inputText id="contact_details_input"
                            value="#{listItem.value}" />
                    </h:panelGroup>
                </ui:repeat>
            </fieldset>
        </h:form>
    </h:panelGroup>
</body>

PS - Использование MyFaces JSF 2.1

1 Ответ

3 голосов
/ 07 июня 2011

Командная ссылка / кнопка должна идти в форме , такой же , что и данные, представляющие интерес.

Если это не вариант из-за некоторых конструктивных или бизнес-ограничений, тогда вынужна вторая командная ссылка / кнопка.Сначала верните исходную командную ссылку / кнопку обратно в нужную форму, присвойте ей id и скройте ее с помощью CSS display: none;.

Затем поместите вторую командную ссылку / кнопку в другой форме, которая делает что-то вроде

<h:commandLink onclick="document.getElementById('form_with_values_to_update:linkid').click(); return false;">
    Do something
</h:commandLink>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...