从action属性中随机调用Bean方法

时间:2011-07-27 07:14:05

标签: java jsp jsf javabeans

我的JSP中有以下内容,这是一个从JSF页面调用的弹出窗口。

<h:commandButton id="cmd" value="Click" 
    onclick="document.getElementById('frm_name:hiddenInput').value=test();"
    action="#{bean.actionClick}" />

和javascript的test()方法我有

opener.focus();
opener.location.href = opener.location;
self.close();    
return hidValues;

我面临的问题是从JSP弹出窗口中选择值时,每次都不会调用辅助bean的操作方法,有时它会被调用,有时它不会被调用。

我怀疑这是否是由于缓存所以我在JSP弹出窗口中添加了以下内容

response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);

然而,即使在添加不缓存JSP页面之后,仍然没有调用bean的action方法,就像我之前提到的那样,有时它会被调用,有时候不会被调用。

我该如何解决这个问题?

我的JSF版本1.1,页面范围是会话。

1 个答案:

答案 0 :(得分:0)

我认为你的问题是窗口在提交之前关闭,你可以在提交完成后关闭窗口,你可以在你的bean上放一个变量并在你的页面加载时在javascript上读取它

<script>

if( ${bean.canClose} ) {
 self.close()
}
</script>

因此,在调用您的操作方法后,页面会重新加载并自行关闭