我有一个代码:
<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;
}
这实际上会打开一个弹出窗口。当我没有参数值时,弹出窗口打开正常。请帮忙!
答案 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}"/>