如果传入无效的widgetvar会发生什么?



我想知道当无效的widgetvar传递到primefaces时会发生什么。我知道这会导致问题,但我想知道是否有一个明确的行为/预期的结果。

一个简单的例子:假设我们有一个对话:

<p:dialog widgetVar="dialogVar" header="Test">
    <h:form>
        <h:outputText value="Test"/>
        <p:commandButton value="Close Dialog" onclick="PF('badInput').hide();" immediate="true"/>
    </h:form>
</p:dialog>

当"关闭对话框"按钮被点击时,Primefaces做什么?(假设没有其他对象将'badInput'作为widgetvar)

当您使用不正确的小部件var时,PrimeFaces不会"做"任何事情。PF('badInput')将返回undefined,这导致.hide()失败。这是纯JavaScript,与PrimeFaces无关。当浏览器遇到JavaScript错误时,JavaScript将停止执行。所以你最好确保你的widget存在,或者先检查一下。

您可以简单地检查undefined:

function hideDialog(widgetVar) {
    if (PF(widgetVar) !== undefined) {
        PF(widgetVar).hide();
    }
}

或使用trycatch:

function hideDialog(widgetVar) {
    try {
        PF(widgetVar).hide();
    }
    catch (error) {
        // console.log("Caught error: " + error);
    }
}

参见:

  • 忽略页面中的javascript语法错误,继续执行脚本

这个对我来说很有用:

if (PrimeFaces.widgets['yourWidget'] !== undefined) {
    // do stuff
}

相关内容

  • 没有找到相关文章

最新更新