1

在我的应用程序中,我实现了一个用于显示信息和错误消息的消息栏,当屏幕导航发生时它将关闭(由window.onunload事件触发的 javascript 函数)。

在少数地方,我实现了a4j:commandButton来呈现特定的模式面板,而无需刷新屏幕。在这种情况下,现有的消息栏会保留(因为没有屏幕刷新!!!),新的消息栏会附加到它上面。

我非常了解a4j:commandButton的属性“ onClick() ”的实现。在所有现有按钮中实现它可能会很忙。我想要在服务器端一次性实现(如果可能的话在 PhaseListener),这样我就不需要编写任何 onunload javascript 函数或onClick()功能。

谁能给我一个关于如何在 ajax 场景中从服务器端控制消息栏的简要想法。?

提前致谢。!!!

4

1 回答 1

0

我知道您询问了服务器端解决方案,但我认为您可能更喜欢这个问题的相对简单的客户端解决方案。

如果您想为“onClick”上的所有或部分按钮元素添加功能,可以尝试使用以下代码。

替换为要在点击事件中添加的函数。替换为您的表单名称(您可以将 is 作为参数传递)

顺便说一句,此代码支持 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

希望这可以帮助。

于 2011-02-14T12:48:03.523 回答