在Liferay / ICEFaces中每次回发后如何确保调用Javascript函数?

时间:2011-04-07 15:32:28

标签: javascript liferay icefaces

我对Liferay和ICEFaces的经验很少。我需要构建一个每次发生回发时调用特定Javascript函数的portlet。

事实上,当表单通过AJAX提交时,会出现一个加载屏幕并阻止屏幕。回发完成后,我需要将其取出并再次控制用户。

我试图将<script>代码段放在portlet的正文中,并且在首次加载页面时成功执行(没关系),并且当回发更改页面的HTML内容时也是如此。

问题是,当服务器没有更改HTML(即返回没有结果的搜索,再次搜索但仍然没有结果)时,该功能不会再次执行。

即使我可以发布一些代码,我也很少知道构建Web应用程序的架构。我在这里给出的是我所拥有的所有信息。通过编辑javascript函数在调用时发出警报,我发现了页面的行为。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

您是否尝试过以下操作:

<script>
    Ice.onSendReceive('document:body',
        function(){/*Before send ajax request*/},
        function(){/*After receive the response*/}
    );
</script>

但是这个解决方案适用于您所做的每个ajax请求,希望这可以帮助您。

答案 1 :(得分:1)

我使用了一个我想分享的随机数字的奇怪技巧。

首先,在backing bean属性中我创建了一个方法

public String getLoadFunction()
{
    return "functionName("+ new Random().nextDouble() +");";
}

然后

<script>
    #{MyViewBean.loadFunction}
</script>

“简单”,ICEFaces非常聪明,在处理AJAX请求时检查HTML是否已被修改。这个技巧非常类似于向HTTP URL附加一个随机数以避免缓存。