2013-11-28 3 views
2

У меня есть страница JSF, которая по существу представляет собой только строки и столбцы данных. Данные каждой строки исходят из атрибутов экземпляра класса. Каждая строка имеет ссылку на нее, которая при нажатии вызывает метод бэк-компонента, который обновляет данные в этой строке. Строки разделены заголовками, которые представляют собой группу строк под ними. Я хочу также сделать заголовок ссылкой, чтобы он обновил все строки под ним. Я попытался использовать некоторые javascript следующим образом:Обновить группу элементов

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

но это только что открыло новые вкладки. Есть ли способ заставить его действовать так, как если бы пользователь нажал на каждую из ссылок? Это то, что JSF выглядит для ссылки, который вызывает защитный компонент:

<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 цикла.

Ссылка заголовок выглядит следующим образом:

<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 на один элемент, и он работал нормально.

ответ

0

Это

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

не правильный путь, чтобы вызвать щелчок на HTMLAnchorElement экземпляре. Вместо этого вам нужно вызвать его метод click().

var obj1 = document.getElementById("refresh0:link0"); 
obj1.click(); 
+0

Спасибо! Я бы поднял ставку, но я еще не могу :( – taylordurden

+0

Добро пожаловать. Не беспокойтесь о голосах. – BalusC

Смежные вопросы