gpt4 book ai didi

validation - primefaces tabView 在选项卡更改时跳过表单验证

转载 作者:行者123 更新时间:2023-12-03 11:21:38 25 4
gpt4 key购买 nike

我正在使用 PrimeFaces 3.3 和 Mojarra 2.17。

我有一个包含 p:tabView 的页面.第二个选项卡包含一个文本框和 required="true" .当我从第二个选项卡导航到第一个选项卡时,它将验证文本框是否为空并显示一条错误消息(我有一个 PhaseListener 类来在全局 p:messages 中显示错误)。如何跳过此验证?

我找不到任何解决方案:

而且我不想使用 PrimeFaces p:wizard .

我的 tabView.xhtml:

<p:tabView id="tabView" dynamic="true" cache="false" activeIndex="0" >  
<p:ajax event="tabChange" listener="#{test.onTabChange}"/>
<p:tab id="tab1" title="Tab1">
<ui:include src="#{test.tab1}"></ui:include>
</p:tab>
<p:tab id="tab2" title="Tab2">
<ui:include src="#{test.tab2}"></ui:include>
</p:tab>
</p:tabView>

在我的 Java 类中:

public void onTabChange(TabChangeEvent event) {              
this.setTab1("tab1.xhtml");
this.setTab2("tab2.xhtml");
}

我的 tab1.xhtml:

<h:form id="form1">    
<p:messages globalOnly="true" />
tab1 page
<br/>
</h:form>

我的 tab2.xhtml:

<h:form id="form2">
<p:messages globalOnly="true" />
<p>
tab2 page
</p>
<p:inputText id="txt1" required="true" />
<p:message for="txt1" display="text" />
<p:commandButton value="Submit" update="@form" />
</h:form>

我的 PhaseListener 类:

public class MyPhaseListener implements PhaseListener {
@Override
public void afterPhase(PhaseEvent e) {
if (e.getPhaseId() == PhaseId.PROCESS_VALIDATIONS) {
if (FacesContext.getCurrentInstance().getMessageList().size() > 0) {
String number = String.valueOf(FacesContext.getCurrentInstance().getMessageList().size());
String errorMsg = "there are " + number + " errors.";
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMsg,
errorMsg));
}
}
}
}

最佳答案

我通过添加代码解决了我的问题:
FacesContext.getCurrentInstance().renderResponse();
在后台 bean 的 TabChangeEvent 方法下..

例如:

public void onTabChange(TabChangeEvent event) {              
this.setTab1("tab1.xhtml");
this.setTab2("tab2.xhtml");
FacesContext.getCurrentInstance().renderResponse();
}

关于validation - primefaces tabView 在选项卡更改时跳过表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14976505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com