【问题标题】:Partial Submit form input部分提交表单输入
【发布时间】:2020-02-01 22:05:16
【问题描述】:

请帮助我解决我在已经制作的(不是由我制作的)网络应用程序中遇到的问题

这是一个 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文档时,数据还在

实现此目的的一种方法是在“继续”按钮中添加 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 天,但没有运气,有什么方法可以实现我需要的部分提交吗?

提前致谢

【问题讨论】:

  • 你的听众完全错误,不需要。并且您的动态 id 分配只有在您周围有一个 jstl 标记时才有效,这反过来可能会导致一些其他问题。哦,“我试过了,但它不工作”不清楚......“不工作”是最终用户对问题的描述

标签: jsf primefaces xhtml submit


【解决方案1】:

oncomplete="submit()" 不是实现部分提交的方法(假设它是老派的form.submit()。这是一种非常早于 ajax 1999 年的提交方式,当输入发生变化时它仍然提交整个表单。

带有submit() 的 Ajax 也不是正确的方法(假设我“了解您想要实现的目标,缺少代码示例会使这变得困难(顺便说一句,您在哪里阅读过这篇文章,也许更好地找到关于 ajax 的更好的教程)) ,因为它实际上与您之前建议的相同。

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

您应该做的是将技术提交(从客户端获取表单输入到服务器)和业务提交(将数据存储在后端存储或类似的地方)在您的脑海和代码中(使用storeDataIn...() submit() 是一种方法。这会自动解决您的向导冲突。

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

另见:

【讨论】:

  • 嗨,首先感谢您的回答,不幸的是,您引用的内容我已经尝试过了,但没有成功,我编辑了我的问题,但还是谢谢您!最好的问候
  • @sebastian:感谢您提及您的尝试可以为我节省 25 分钟。如果这不是解决方案,那么您的问题完全不清楚。再次非常感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 2012-05-05
相关资源
最近更新 更多