2016-09-26 28 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は何をしますか? (他のオブジェクトにwidgetvarとして 'badInput'がないと仮定して)

+0

@Kukeltje私はそれを試しました。私はそれを経験しました。私はそれがWebページを混乱させることは知っていますが、私はprimefacesが実際に悪い変数で何をするのかについて具体的な説明を探しています。 – lucasvw

+0

また、なぜdownvotes?私は、私が何を求めているのか明確に分からなかった@Kukeltjeの人物だと仮定しています。 – lucasvw

+0

@Kukeltjeもし私がそれをする方法を知っていたら、私は質問しなかったでしょう。すべてを説明するケア?バックグラウンドで何が起こっていたのかをログファイルには何も見ませんでした。 – lucasvw

答えて

2

不正なウィジェットvarを使用すると、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

関連する問題