Xpages:无法访问CSJS

时间:2017-04-11 15:31:43

标签: xpages

尝试在客户端javascript中使用自定义属性(通过compositeData),但它无效。

用户选择不同的值,因此会触发onChange事件。我能够获取我想要的字符串(refreshOnChangeID)并将其放入我的var y中。我发出警报,我得到正确的值(" fld4b")。

然后代码执行XSP.partialRefreshPost。如果我对该字段进行硬编码,那么我将获得部分刷新。

但是输入var(在注释掉的最后一行)并不起作用。 id解析为零。

我做错了什么?

$(document).ready(

function() {
    var x = x$("#{javascript:return getComponent(compositeData.fieldName).getClientId(facesContext);}").select2({});
    x.on('change', function(e) {
        var y = "#{compositeData.refreshOnChangeID}";
        alert(y);
        XSP.partialRefreshPost("#{id:fld4b}", {
            immediate: true
        });
        //XSP.partialRefreshPost('#{id:'+y+'}',{immediate: true});
    })
});

我能够通过创建一个隐藏的计算字段来解决这个问题,该字段已解析为我想要刷新的字段的id:

<xp:text
        escape="true"
        id="refreshID"
        value="${javascript:'#{id:'+compositeData.refreshOnChangeID+'}'}"
        style="display:none">
    </xp:text>

然后我能够抓住这个字段的值并在我的css中使用它:

$(document).ready(

function() {
    var x = x$("#{javascript:return getComponent(compositeData.fieldName).getClientId(facesContext);}").select2({});
    x.on('change', function(e) {
        var t = "#{id:refreshID}";
        var fldVal2 = document.getElementById(t).innerHTML;
        XSP.partialRefreshPost(fldVal2, {
            immediate: true
        });
    })
});

2 个答案:

答案 0 :(得分:2)

使用值client ID + compositeData.fieldName创建Computed字段,然后在客户端java脚本函数中使用document.getElementById(“”)。innerHTML来获取compositeData值。

答案 1 :(得分:0)

如果这是在输出脚本控件中,则EL不在那里工作。试试var y = '#{javascript:compsiteData.get("refreshOnChangeID")}';