2016-09-26 49 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

相關問題