一、声明一个JavaScript函数:
function clickLink(linkId)
{
var fireOnThis = document.getElementById(linkId);
if (document.createEvent)
{
var evObj = document.createEvent('MouseEvents');
evObj.initEvent( 'click', true, false );
fireOnThis.dispatchEvent(evObj);
}
else if (document.createEventObject)
{
fireOnThis.fireEvent('onclick');
}
}
二、然后在PAGE中做一个隐藏的commandLink
<h:commandLink id="testMenu" style="display:none; visibility: hidden;" action="Login"></h:commandLink>
三、在html元素的onclick事件中调用clickLink函数。需要注意的是:linkId并不是“testMenu”,需要加上testMenu的父容器id,这是JSF的特性,如果不清楚其ID是什么,可以先显示页面之后查看页面源文件,看看这个元素的真实ID是什么,一般是“父容器ID:元素ID”,比如“testForm:testMenu”。
如果确实想通过你定义的ID来调用,可以参考MyFaces Tomahawk的forceId实现。
<a οnclick="clickLink('testForm:testMenu');">HTML LINK</a>
这样,点击超连接就能调用commandLink的action了。actionLintener同理。