2013-06-24 55 views
0

我有這樣一個代碼:JS與參數值的函數調用從<P:的commandButton>

<p:commandButton type="submit" value="Select User" onclick="showGrpMemberSearchPageCalenderLeave(#{groupname})"/> 

在這裏,我已經設置的groupname像的值:

<c:set var="groupname" value="#{session.getAttribute('USER_GROUP_NAME')}"/> 

如果我打印這個值#{session.getAttribute('USER_GROUP_NAME')}它給出了正確的值。但是我不想調用我想調用showGrpMemberSearchPageCalenderLeave(#{groupname})的Java腳本函數。

功能是:

function showGrpMemberSearchPageCalenderLeave(groupName){ 
var x= (screen.width-530)/2; 
var y= (screen.height-450)/2; 
window.open('./SearchGroupMembersLeaveCalander.xhtml?groupName='+groupName,'mywindow','resizable=no,toolbar=no,scrollbars=yes,height=450,width=530,top='+y+',left='+x); 
return false; 
} 

這實際上會打開一個彈出。當我沒有參數值時,彈出窗口打開正常。請幫忙!

回答

1
onclick="showGrpMemberSearchPageCalenderLeave(#{groupname})" 

所以,你打印EL變量#{groupname}作爲JS變量?試想一下,#{groupname}返回somegroup一個字符串值,那麼這段代碼得到最終呈現如下(在瀏覽器中,右擊並查看源代碼打開的頁面中看到它自己):

onclick="showGrpMemberSearchPageCalenderLeave(somegroup)" 

你有一個JS變量somegroup在JS範圍內?顯然不是。它看起來像是你想將它作爲JS字符串傳遞。你應該引用它。你最終要的是JSF生成下面的HTML/JS代碼:

onclick="showGrpMemberSearchPageCalenderLeave('somegroup')" 

然後您應該寫這樣的方式在JSF/EL代碼,它會產生完全所需的HTML/JS代碼:

onclick="showGrpMemberSearchPageCalenderLeave('#{groupname}')" 

無關的具體問題,在您的c:set價值是沒有意義的:

<c:set var="groupname" value="#{session.getAttribute('USER_GROUP_NAME')}"/> 

看起來你不明白EL是如何工作的。它已經在頁面,請求,會話和應用程序範圍內搜索變量。這應該做如下:

<c:set var="groupname" value="#{USER_GROUP_NAME}"/> 
+0

謝謝它的作品:) – NDeveloper

+0

不客氣。 – BalusC