编程语言
首页 > 编程语言> > javascript – 如何使用XSP.partialRefreshPost方法禁用验证器?

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