js函数调用,参数值来自<p:commandbutton> </p:commandbutton>

时间:2013-06-24 06:30:08

标签: javascript jsf

我有一个代码:

<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 个答案:

答案 0 :(得分:1)

onclick="showGrpMemberSearchPageCalenderLeave(#{groupname})"

那么,您是将EL变量#{groupname}打印为JS变量吗?想象一下,#{groupname}返回字符串值somegroup,然后此代码最终呈现如下(在浏览器中打开页面,右键单击查看源以自行查看):< / p>

onclick="showGrpMemberSearchPageCalenderLeave(somegroup)"

JS范围中是否有JS变量somegroup?显然不是。看起来你打算将它作为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}"/>