我正在使用带有三个标签的手风琴面板。
每个标签都包含 accordionPanel 所需的字段和<p:ajax>
标记:
<p:ajax event="tabChange" update=":contentForm:growl"/>
<p:ajax event="tabClose" update=":contentForm:growl"/>
默认情况下,所有标签均已关闭。当我单击打开任何选项卡时,它会对所有选项卡中的所有输入执行更改。
如何在打开/关闭标签期间跳过字段验证并执行ajax查询?
(我需要一个Ajax查询来保存打开的标签索引到Bean:activeIndex="#{tabBean.activeTabs}"
)
答案 0 :(得分:0)
我已经解决了这个问题。我创建了saver-class:
import javax.faces.event.AjaxBehaviorEvent;
import org.primefaces.component.accordionpanel.AccordionPanel;
public class ActiveIndexSaver {
private String activeTabs = "-1,0";
public String getActiveTabs() {
return activeTabs;
}
public void setActiveTabs(String activeTabs) {
this.activeTabs = activeTabs;
}
public void saveIndexes(AjaxBehaviorEvent abe){
AccordionPanel accordion = (AccordionPanel)abe.getComponent();
activeTabs = accordion.getActiveIndex();
}
}
之后,我将上面的bean的Inject写入了page-bean并为他获取了getter:
@Inject
private ActiveIndexSaver activeIndexSaver;
....
public ActiveIndexSaver getActiveIndexSaver() {
return activeIndexSaver;
}
最后,html:
<p:accordionPanel ... activeIndex="#{tabBean.activeIndexSaver.activeTabs}">
<p:ajax event="tabChange" immediate="true" listener="#{tabBean.activeIndexSaver.saveIndexes}"/>
<p:ajax event="tabClose" immediate="true" listener="#{tabBean.activeIndexSaver.saveIndexes}"/>
......