這不正是 「過客」 JSF變量。這只是打印JSF變量,就好像它們是JavaScript變量/值一樣。你知道,JSF和JS根本不同步運行。 JSF在web服務器上運行,並生成HTML/CSS/JS代碼,然後在網頁瀏覽器中運行。
您的具體問題很可能是因爲您以這樣的方式編寫JSF代碼而導致它生成無效的JS語法。一種簡單的方法來驗證,即通過檢查JSF生成的HTML輸出,您可以在瀏覽器中右鍵點擊查看源文件,並通過檢查是否在瀏覽器中的JS控制檯中看不到任何語法錯誤報告您可以通過在Chrome/IE9 +/Firefox23 +中按F12來查找。
試想一下,#{entity.key}
這裏
<a onclick="actualizaMenu(#{entity.key})">#{entity.nombre}</a>
印像"foo"
Java字符串變量,然後將生成的HTML看起來像
<a onclick="actualizaMenu(foo)">some name</a>
但是,嘿,你看,它表示一個JavaScript 變量命名foo
,不是JS字符串值!所以,如果你真的想最終落得如
<a onclick="actualizaMenu('foo')">some name</a>
,那麼你應該指導JSF生成正是HTML:
<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>
使其異步。