Частичное представление формы ввода - PullRequest
0 голосов
/ 03 октября 2019

пожалуйста, мне нужна помощь в решении проблемы, возникшей у меня в уже сделанном (не мной) веб-приложении

Это веб-приложение на Java, использующее JSF 2.2.8-02, Primefaces 6.1 и Java 8

Итак, в основном это выдержка из одной из форм в этом приложении, которые являются частью мастера, у меня есть один документ .xhtml, который отображает каждый шаг мастера при нажатии кнопки «Продолжить»

<div class="c100 fLeft">
    <p:fieldset styleClass="col c33 fLeft}" rendered="#{type.isPerson()}">
        <p:inputText id="#{id}FirstSurname"
            value="#{formData.firstSurname}"
            required="#{required}"
            requiredMessage="Must input first name"
            title="First surname"
            disabled="#{readonly or disabled}"
            readonly="#{readonly}">
        </p:inputText>
        <p:outputLabel id="#{id}FirstSurname-lbl" for="#{id}FirstSurname" value="First Surname" />
        <p:message display="text" id="#{id}FirstSurname-msg" for="#{id}FirstSurname" />
    </p:fieldset>
    <p:fieldset styleClass="col c33 fLeft" rendered="#{type.isPerson()}">
        <p:inputText id="#{id}SecondSurname"
            value="#{formData.secondSurname}"
            required="false"
            requiredMessage="Must input second surname"
            title="Second surname"
            disabled="#{readonly or disabled}"
            readonly="#{readonly}">
        </p:inputText>
        <p:outputLabel id="#{id}SecondSurname-lbl" for="#{id}SecondSurname" value="Second Surname" />
        <p:message display="text" id="#{id}SecondSurname-msg" for="#{id}SecondSurname" />
    </p:fieldset>
</div>

Что мне нужно, это сделать частичную отправку данных в первом вводе id = "# {id} FirstSurname", чтобы при обновлении пользователем документа .xhtml данные все еще были там

Одним из способов достижения этого является отправка всей формы с добавлением oncomplete = "submit ()" к кнопке "Продолжить" или добавлением некоторого AJAX с действием submit (), но это конфликтует с другой частьюУ меня есть несколько шагов после формы (отправка всей формы выполняется на последнем шаге мастера), поэтому я не могу сделать это следующим образом

Я уже сделал это, но он не работает:

<p:inputText id="#{id}SecondSurname"
    value="#{formData.secondSurname}"
    required="false"
    requiredMessage="Must input second surname"
    title="Second surname"
    disabled="#{readonly or disabled}"
    readonly="#{readonly}">
    <p:ajax event="change" listener="#{formDataParty.secondSurname}" process="@this" update="#{id}SecondSurname"/>
</p:inputText>

Я искал 2 дня tЧерез Интернет без удачи, есть ли способ добиться этой частичной отправки мне нужно?

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

1 Ответ

0 голосов
/ 03 октября 2019

oncomplete="submit()" - это не способ добиться частичной отправки (при условии, что это делает старую школу form.submit(). Это очень предварительный способ представления заявки в 1999 году, когда вход изменяется, и он все еще отправляет всю форму.

Ajax с submit() также не является правильным способом (если я понимаю, что вы пытаетесь достичь, отсутствие примеров кода делает это трудным (где вы читали это, кстати, может быть, лучше найти лучший учебник)о ajax), поскольку он фактически делает то же самое, что вы предлагали ранее.

И мне любопытно, что вы пытались найти, вводя " PrimeFaces с частичной формой отправки сайта: stackoverflow.com " в поисковой системе дает много полезных результатов, равно как и документация и демонстрация PrimeFaces.

Что вам нужно сделать, это разделить техническую отправку (получить данные формы от клиента ксервер) и бизнес-представление (хранить данные в серверном хранилище или аналогичном) в своем уме и в коде (используйте storeDataIn...() вместо submit() включеноспособ сделать это. Это автоматически решает конфликт вашего мастера.

Для фактической частичной отправки, то есть, когда данные от одного и только одного входа должны быть отправлены с клиента на сервер, см. Как частичная отправка с ajax aконкретный компонент JSF? .

См. Также:

...