0

我有一个像这样的代码:

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

在这里,我设置了groupnamelike 的值:

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

如果我打印这个值#{session.getAttribute('USER_GROUP_NAME')},它会给出正确的值。但是我想调用的java脚本函数showGrpMemberSearchPageCalenderLeave(#{groupname})没有被调用。

功能是:

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;
}

这实际上会打开一个弹出窗口。当我没有参数值时,弹出窗口打开得很好。请帮忙!

4

1 回答 1

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

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

onclick="showGrpMemberSearchPageCalenderLeave(somegroup)"

somegroupJS 范围内有 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}"/>
于 2013-06-24T12:06:40.813 回答