Java 在JSF+中重置表单之前,检查输入的一些必填输入字段;素面
我在使用PrimeFaces实现一种机制来检查JSF表单中的强制输入字段时遇到了一个问题,该机制在提交表单之前是否由用户填写 我在InputExts中使用了required=“true”机制,用于在提交之前检查并触发自定义消息,以提示用户在必填字段中输入一些值,例如:Java 在JSF+中重置表单之前,检查输入的一些必填输入字段;素面,java,javascript,jsf,primefaces,Java,Javascript,Jsf,Primefaces,我在使用PrimeFaces实现一种机制来检查JSF表单中的强制输入字段时遇到了一个问题,该机制在提交表单之前是否由用户填写 我在InputExts中使用了required=“true”机制,用于在提交之前检查并触发自定义消息,以提示用户在必填字段中输入一些值,例如: <p:inputText id="exp" required="true" requiredMessage="#{lang.dailyCurrencyValues_exp_req_txt}" value="#{marketD
<p:inputText id="exp" required="true" requiredMessage="#{lang.dailyCurrencyValues_exp_req_txt}" value="#{marketDataDefinitionProcesses.currencyType.explanation}"/>
我的老板让我重新设置页面,如果用户成功完成提交并保持在同一页面上。为了实现这一点,我在提交按钮上使用了oncomplete=“document.myForm.reset();”,它成功地重置了表单和表单中的所有字段
但是,如果用户没有输入所有必填字段并按下submit按钮,则表单将给出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元素检索日历值的解决方案都是选项,这些元素检索关于required=“true”字段是否已填充的信息
你诚挚的
法鲁克我认为你可以通过PrimeFaces实现你的目标:
...
@ManagedBean
@请求范围
公共类MrBean{
公共无效剂量测定法(){
//做你的事
RequestContext=RequestContext.getCurrentInstance();
execute(“document.getElementById(“myForm”).reset()”;
}
}
发布后向同一视图发送重定向。它将创建一个全新的请求,所有输入值为空,或者至少为请求/视图范围bean中定义的默认值
public String submit() {
// ...
return FacesContext.getCurrentInstance().getViewRoot().getViewId() + "?faces-redirect=true";
}
也许你可以试着这样做
public class MarketDataDefinitionProcesses{
private CurrencyType currencyType;
Boolean createStatus;
public String create(){
if(service.checkData(currencyType)){
//insert data
//show statusMessage or not
createStatus=Boolean.TRUE;
reflesh(create,createStatus);
}
return null;
}
public void reflesh(CurrencyType preNextCreateCurrency,Boolean createStatus){
preNextCreateCurrency = new CurrencyType();
this.currencyType = preNextCreateCurrency ;
RequestContext rc = RequestContext.getCurrentInstance();
rc.update("form:id"); // if the inputText in the panelGrid, you can put the panelGrid id
createStatus = Boolean.FALSE;
}
}
当用户提交数据时,页面需要一个新实例,并使用ReuqestContext更新表单或您需要的部分创建上下文实例后,我没有找到执行预定义函数。我该怎么办?@FarukPostacioglu我忘了提到RequestContext仅在PrimeFaces v3.0RequestContext中可用,因为我可以声明实例,但functiom的类不可用。您认为我该怎么办?是否有其他方法可以从backingBean中重置页面?@FarukPostacioglu检查您是否导入了正确的包
org.primefaces.context.RequestContext
public class MarketDataDefinitionProcesses{
private CurrencyType currencyType;
Boolean createStatus;
public String create(){
if(service.checkData(currencyType)){
//insert data
//show statusMessage or not
createStatus=Boolean.TRUE;
reflesh(create,createStatus);
}
return null;
}
public void reflesh(CurrencyType preNextCreateCurrency,Boolean createStatus){
preNextCreateCurrency = new CurrencyType();
this.currencyType = preNextCreateCurrency ;
RequestContext rc = RequestContext.getCurrentInstance();
rc.update("form:id"); // if the inputText in the panelGrid, you can put the panelGrid id
createStatus = Boolean.FALSE;
}
}