部分提交表单输入

时间:2019-10-03 14:47:50

标签: jsf primefaces xhtml submit

在我已经制作(不是我自己)的网络应用程序中遇到的问题时,我需要帮助

这是一个Java Web应用程序,使用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文档时数据仍然存在

一种实现此目的的方法是使用“ complete”按钮中添加的oncomplete =“ submit()”提交整个表单,或者通过使用Submit()操作添加一些AJAX,但这与表单的另一部分冲突表单之后,我需要执行一些步骤(整个表单提交都在向导的最后一步中完成),所以我不能这样做

我已经做到了,但是没有用:

<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天没有运气,有什么方法可以实现我需要的部分提交?

预先感谢

1 个答案:

答案 0 :(得分:0)

oncomplete="submit()"并不是实现部分提交的一种方法(假设它是一所老学校form.submit()。这是1999年下半年之前,当输入发生更改并且仍然提交时进行提交的一种方式)整个表格。

带有submit()的Ajax也不是正确的方法(假设我理解您要实现的目标,缺少代码示例会使这一点变得困难(您在哪里读了这本书,也许更好地找到了关于ajax),因为它实际上与您之前建议的功能相同。

我很好奇您在搜索时尝试了什么,在搜索引擎中输入PrimeFaces partial submit form site:stackoverflow.com会给出很多有用的结果,PrimeFaces文档和展示也是如此。

您应该做的是,在脑海和代码中分开使用技术提交(将表单输入从客户端输入到服务器)和业务提交(将数据存储在后端存储或类似存储中)(使用{{1} }代替storeDataIn...()是一种解决方法,它可以自动解决向导冲突。

对于实际的部分提交,这意味着当需要将一个输入和一个输入的数据从客户端发送到服务器时,请参见How to partial submit with ajax a specific jsf component?

另请参阅: