我想爲JSF複合組件的每個實例定義一個JavaScript函數。如何從JSF clientId生成唯一的JavaScript變量名稱?
對於這一點,在組件內部,我想是這樣的:
<h:outputScript>
function myFunction_#{component.clientId}(day) {
//do my instance specific stuff
}
</h:outputScript>
具體我想在RichFaces的日曆像這樣使用此功能:
<rich:calendar id="calendar" ... dayClassFunction="myFunction_#{component.clientId}">
但ClientID的不一定只包含在JavaScript變量名稱中有效的字符。
有沒有辦法在JSF EL表達式中計算md5哈希或類似於clientId(或其他東西)的僞唯一的東西?
我需要它特定於實例,因爲返回值依賴於實例值,而dayClassFunction屬性不接受將clientId本身或類似特定的參數作爲參數的函數。
如果函數內部的this是爲創建的DOM節點,這將會相對簡單。 JSF中不是這種情況嗎? –
確實如此!謝謝,我剛剛檢查過,它不是DOM節點,但仍然是特定於實例的JS對象,這非常有幫助 – user777
您正在以錯誤的方式解決問題。乾淨的方式被問及並在這裏回答:http://stackoverflow.com/questions/12615556/integrate-javascript-in-jsf-composite-component-the-clean-way只需重用相同的功能,並提取複合組件特定的數據在那裏。 – BalusC