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

问题描述 投票:2回答:3

我在实现一个机制来检查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”字段是否填充的信息的选项。

此致...

法鲁克

java javascript jsf primefaces
3个回答
2
投票

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

public String submit() {
    // ...

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

0
投票

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

RequestContext

0
投票

也许你可以尝试这种方式

<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更新表单或您需要的部分

© www.soinside.com 2019 - 2024. All rights reserved.