刷新元素组

2024-01-12

我有一个 JSF 页面,它本质上只是数据行和列。每行的数据都来自类实例的属性。每行上都有一个链接,单击该链接时会调用一个支持 bean 方法来刷新该行上的数据。行由代表其下方的行组的标题分隔。我也想将标题设为链接,以便它将刷新其下方的所有行。我尝试使用一些像这样的JavaScript:

function refreshGroup(){
  var obj1 = document.getElementById("refresh0:link0");
  var obj2 = document.getElementById("refresh1:link1");
  window.open(obj1);
  window.open(obj2);
 };

但这只是打开了新标签。有什么方法可以让它表现得就像用户点击了每个链接一样?这就是 JSF 中调用支持 bean 的链接的样子:

<h:form id="refresh#{loop.index}" >
  <h:commandLink id="link#{loop.index}" value="#{a.status}" >
    <f:ajax listener="#{a.getCheckAppMonitor}" 
            render=":errs#{loop.index} :refresh#{loop.index} :errs_#{i+1}"
            onevent="refreshMoreLessLinks" />
  </h:commandLink>&nbsp;<img id="img_#{loop.index}" 
                             class="hidden" 
                             src="resources/images/ajax-loader.gif"/>
</h:form>

这一切都嵌套在一个c:foreach loop.

标题链接如下所示:

<h3><a href="javascript:refreshGroup();">Group 1</a></h3>

Edit:

我突然想到我需要创建一个commandLink这样我就可以再次渲染所有内容。我这样做了:

<h:form id="header1" >
  <h:commandLink class="link" value="Group 1" >
    <f:ajax listener="#{appBean.refresh}" render="@all" />
  </h:commandLink>
 </h:form>

它似乎有效,只是它导致我的浏览器(IE8)崩溃。当浏览器恢复时,我可以看到它确实更新了。关于 render="@all" 导致我的浏览器崩溃的任何想法?我将 @all 更改为一个元素,效果很好。


This,

var obj1 = document.getElementById("refresh0:link0");
window.open(obj1);

不是触发点击的正确方法HTMLAnchorElement https://developer.mozilla.org/en/docs/Web/API/HTMLAnchorElement实例。你需要调用它的click()方法代替。

var obj1 = document.getElementById("refresh0:link0");
obj1.click();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

刷新元素组 的相关文章