javascript – 如何使用XSP.partialRefreshPost方法禁用验证器?
作者:互联网
我正在使用XSP.partialRefreshPost来触发客户端Javascript的部分刷新.我希望能够在不触发验证器的情况下进行局部刷新(这只是普通输入控件的一个简单属性).
我找到了几个对“options”参数的引用,你可以将它们与XSP.partialRefreshPost结合使用(包括控制验证的能力).但是,我还没有找到任何描述语法/选项名称的地方???
谁知道怎么做?
编辑:
好的,我已经添加了几个我尝试过的例子 – 澄清问题.我也在XPages便携式命令指南中嗤之以鼻.
首先,使用“立即”参数:
$(".selectCtrl").on("change", function(e){XSP.partialRefreshPost("#{id:repeatCtrl}", {immediate: true})})
然后,使用“valmode”参数:
$(".selectCtrl").on("change", function(e){XSP.partialRefreshPost("#{id:repeatCtrl}", {params: {'valmode': 0}})})
后者在“valmode”和“0”周围引用了变化.
这些都没有奏效……(即刷新开始 – 但是验证器失败了).我希望我在这里得到错误的语法 – 但是还没有找到任何有用的例子 – 但是;-)
解决方法:
这是一个PhaseListener,如果需要,它会禁用验证:
package ch.hasselba.demo;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import com.ibm.xsp.context.ExternalContextEx;
import com.ibm.xsp.context.FacesContextExImpl;
public class DisableValidationPhaseListener implements PhaseListener {
private static final long serialVersionUID = 1L;
public void afterPhase(PhaseEvent arg0) {}
public void beforePhase(PhaseEvent arg0) {
FacesContextExImpl fc = (FacesContextExImpl) arg0.getFacesContext();
ExternalContextEx ec = (ExternalContextEx) fc.getExternalContext();
// check for the "disableValidation" parameter & disable validation
// if required
if( ec.getRequestParameterMap().containsKey("disableValidation") )
fc.setDisableValidators(true);
}
public PhaseId getPhaseId() {
return PhaseId.PROCESS_VALIDATIONS;
}
}
您只需要在PartialRefresh中添加一个参数,并禁用验证:
XSP.partialRefreshPost('#{id:refreshMe}', {'params': {'disableValidation':true}} );
标签:xpages,javascript 来源: https://codeday.me/bug/20190928/1825245.html