我对Liferay和ICEFaces的经验很少。我需要构建一个每次发生回发时调用特定Javascript函数的portlet。
事实上,当表单通过AJAX提交时,会出现一个加载屏幕并阻止屏幕。回发完成后,我需要将其取出并再次控制用户。
我试图将<script>
代码段放在portlet的正文中,并且在首次加载页面时成功执行(没关系),并且当回发更改页面的HTML内容时也是如此。
问题是,当服务器没有更改HTML(即返回没有结果的搜索,再次搜索但仍然没有结果)时,该功能不会再次执行。
即使我可以发布一些代码,我也很少知道构建Web应用程序的架构。我在这里给出的是我所拥有的所有信息。通过编辑javascript函数在调用时发出警报,我发现了页面的行为。
你能帮帮我吗?
答案 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附加一个随机数以避免缓存。