2016-09-26 89 views
-3

我想知道当一个无效的widgetvar传递到primefaces会发生什么。我知道它会导致问题,但我想知道是否有定义的行为/预期结果。如果你传入一个无效的widgetvar会发生什么?

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

<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)

+0

@Kukeltje我试过了。我体验过它。我知道它弄乱了网页,但我正在寻找关于什么是primefaces实际上对坏变量做了具体解释。 – lucasvw

+0

另外,为什么downvotes?我假设一个来自@Kukeltje,他显然不明白我在问什么。 – lucasvw

+0

@Kukeltje如果我知道如何做到这一点,我不会问我的问题。谨慎解释呢?我在日志文件中没有看到任何内容,表明背景中发生了什么。 – lucasvw

回答

2

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

你可以简单地检查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); 
    } 
} 

参见:

+0

很好的答案!这正是我希望找到的,谢谢! – lucasvw

+0

@Kukeltje这会让你花更少的时间留下一个好的答案,然后留下一堆咸味的评论,“很容易”发现。我不知道答案,也不知道如何找到答案,这就是为什么我问了一个问题。只因为你知道如何做某件事并不意味着我会这样做。这就是为什么创建StackOverflow。 – lucasvw

+0

@Kukeltje如果你有时间留下多个无用的评论,你有时间将一个简短的答案放在一起,或者给出一个直接的答案或者给出步骤来找到答案。你不必在这个网站上花费你的时间来为那些在某个科目中认识不到你的人贬低他们巡逻。 – lucasvw

相关问题