在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段相关的知识,希望对你有一定的参考价值。

我在实现一个机制来检查JSF表单中的强制输入字段时遇到问题,使用PrimeFaces在提交表单之前由用户填写或不填写。

我在inputTexts中使用了required =“true”机制来检查和触发自定义消息,然后提交用户输入一些值到必填字段,例如:

<p:inputText id="exp" required="true" requiredMessage="#{lang.dailyCurrencyValues_exp_req_txt}" value="#{marketDataDefinitionProcesses.currencyType.explanation}"/> 

如果用户成功完成提交并留在同一页面,我的老板要求我重置页面。为了实现这一点,我使用了oncomplete =“document.myForm.reset();”在提交按钮上成功重置表单和表单中的所有字段。

但是,如果用户未输入所有必填字段并按下提交按钮,则表单将给出在requiredMessage中指定的消息,并重置表单及其中的所有元素。如果提交失败,我想阻止这种情况,重置值。我尝试实现一个javascript函数,如果未填充必填字段,则尝试阻止重置表单。但是,我再次遇到有关检索表单中元素值的问题。

<p:calendar id="dateValueId" value="#{marketDataDefinitionProcesses.currencyType.dateValue}" pattern="dd.MM.yyyy" required="true" requiredMessage="#{lang.dailyCurrencyValues_dateValueId_req_txt}"/>

我没有成功通过JavaScript检索日历元素值。

而现在,我正在等待你的意见来解决这个问题。我认为,使用JavaScript或任何JSF / PrimeFaces元素检索日历值的解决方案是检索有关所需=“true”字段是否填充的信息的选项。

此致...

法鲁克

答案

发布后将重定向发送到同一视图。它将创建一个全新的请求,其中所有输入值为空或至少为其在请求/视图范围bean中定义的默认值。

public String submit() {
    // ...

    return FacesContext.getCurrentInstance().getViewRoot().getViewId() + "?faces-redirect=true";
}
另一答案

我认为你可以通过PrimeFaces qazxsw poi实现你的目标:

RequestContext
另一答案

也许你可以尝试这种方式

<h:form id="myForm">
   ...
</h:form>

@ManagedBean
@RequestScoped
public class MrBean {
   public void doSomething() {
      // Do your thing

      RequestContext context = RequestContext.getCurrentInstance();
      context.execute("document.getElementById("myForm").reset()"); 
   }
}

当用户提交数据时,页面需要一个新实例并使用ReuqestContext更新表单或您需要的部分

以上是关于在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段的主要内容,如果未能解决你的问题,请参考以下文章

PrimeFaces 4.0/JSF 2.2.x 中的文件上传不适用于 AJAX - javax.servlet.ServletException:请求内容类型不是多部分/表单数据

JSF 2.0 更新 primefaces 对话框第一次不起作用

JSF PrimeFaces overlayPanel 提交值

禁用 jsf/primefaces 中的窗口功能

使用ajax从jsf中的primefaces树选定项设置primefaces selectOneMenu默认值

如何从jsf / primefaces中的托管bean向页面添加组件[重复]