在我的应用程序中,我实现了一个消息栏,用于显示信息和错误消息,当屏幕导航发生时将关闭(由 window.onunload 事件触发的javascript函数)。
在少数地方,我已经实现了 a4j:commandButton 来渲染特定的模板面板,而无需刷新屏幕。在这种情况下,现有的消息栏会保留(因为没有屏幕刷新!!!),新的消息栏会被附加到它上面。
我非常了解 a4j:commandButton 的属性“ onClick()”的实现。在所有现有按钮中实现它可能是繁忙的。我希望在服务器端实现一次性(如果可能的话,在PhaseListener中),这样我就不需要编写任何onunload javascript函数或 onClick()功能。
任何人都可以简单介绍一下如何在ajax场景中控制服务器端的消息栏。
提前致谢。!!!
答案 0 :(得分:0)
我知道您问过服务器端解决方案,但我认为您可能更喜欢这个问题的客户端解决方案。
如果你想为“onClick”上的所有或部分按钮元素添加一个函数,你可以尝试使用以下代码。
替换为要在click事件上添加的函数。 替换为您的表单名称(您可以传递作为参数)
顺便说一下,这段代码支持IE FF CHROME 等。
function addFunctionToAllButtons()
{
var buttons = document.*YourForm*.getElementsByTagName("button");
for(i=0; i<buttons.length; i++)
{
if(buttons[i].id =='yourButtonId')
{
attachEvent(buttons[i],'click',*yourFunction*,false);
}
}
}
function attachEvent(obj,evt,fnc,useCapture)
{
if (!useCapture) useCapture=false;
if (obj.addEventListener)
{
obj.addEventListener(evt,fnc,useCapture);
return true;
}
else if (obj.attachEvent)
return obj.attachEvent("on"+evt,fnc);
else
{
MyAttachEvent(obj,evt,fnc);
obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
}
}
- 编辑
要转发子页面,我们需要特别注意我们在以下行中引用的buuton ID:
if(buttons[i].id =='yourButtonId')
以及表单ID
希望这会有所帮助。