これはJSF変数の正確 "通過" ではありません。このような
何か。これはJSF変数をJavaScript変数/値のように出力しているだけです。 JSFとJSは全く同期して動作しません。 JSFはWebサーバーで動作し、HTML/CSS/JSコードを生成します.HTML/CSS/JSコードは、一度そこに着いたらWebブラウザで実行されます。
具体的な問題は、無効なJS構文を生成するような方法でJSFコードを記述したために発生している可能性があります。それを確認する簡単な方法は、JSFで生成されたHTML出力を右クリックして確認することです(ソース表示)。ブラウザでJSコンソールに構文エラーレポートが表示されていないかどうかをチェックするChrome/IE9 +/Firefox23 +でF12キーを押すと見つかります。
というJavaScript 変数を表す、ここ
<a onclick="actualizaMenu(#{entity.key})">#{entity.nombre}</a>
#{entity.key}
が"foo"
のようなJavaの文字列変数を印刷し、その後、生成されたHTMLが
<a onclick="actualizaMenu(foo)">some name</a>
のようになります。でもねえ、見ていることを想像してみてfoo
、JS文字列値ではありません!あなたが実際に最終的に
<a onclick="actualizaMenu('foo')">some name</a>
として終わるしたいのであれば、あなたは正確にHTMLを生成するために、JSFに指示する必要があります
<a onclick="actualizaMenu('#{entity.key}')">#{entity.nombre}</a>
しかしJSF変数に特殊文字に注意してください。これにはOmniFaces of:escapeJS()
functionを使用できます。具体的な問題へ
無関係、actualizaMenu()
の具体的な実装では意味がありません。 Beanプロパティを設定しようとしているようです。あなたはJSを使ってはいけませんが、代わりに<h:commandLink>
です。
<h:commandLink value="#{entity.nombre}" action="#{linkedMenu.setKey(entity.key)}" />
ネストした場合、必要に応じて<f:ajax>
を非同期にします。