Как я получу идентификатор в a4j: ajax по завершении?

Я столкнулся с проблемой с компонентом a4j:ajax. Как получить идентификатор родительского компонента в функции oncomplete?

У меня есть rich:dataTable и весь столбец inputText с прослушивателем ajax, что мне нужно сделать, так это когда проверка ajax возвращает false, тогда мне нужно сосредоточиться на этом поле и изменить фон на красный. К сожалению, я не знаю, как получить идентификатор конкретного inputText из тегов. В приведенном ниже коде указано, что я собираюсь сделать, но идентификатор компонента не определен. Я думаю, из-за этого идентификатор функции ajax не inputText...

Это код:

<h:inputText value= "#{resultsTableRow[valueOfField]}" >
    <a4j:ajax event="blur" exceute="@form" render="submitManualsButton" 
    listener="#{bean.theActionListener(resultsTableRow.identifier , columnDBName)}" 
    oncomplete=" if (#{bean.validationResult}) #{rich:component('validationPopup')}.show();

   setFocusOnElement(this.id); // <----- that is crucial 


   return false;" />
</h:inputText>

И js-функция:

function setFocusOnElement( element)
{   
   $(resolveId(id)).focus();
}

Любая помощь будет здорово! Заранее спасибо....


person code_pretty    schedule 16.04.2014    source источник


Ответы (1)


Ну, дайте идентификатор для ввода и используйте его.

<h:inputText id="input" …>
    …
    setFocusOnElement("input");

Теперь, поскольку полные идентификаторы выглядят по-другому, вам нужно сделать что-то вроде этого:

<rich:dataTable rowKeyVar="rk" …>
    …
    <h:inputText id="input#{rk}" …>
        …
        setFocusOnElement("input#{rk}");

function setFocusOnElement(id)
{   
    $('[id$=' + id + ']').focus();
}
person Makhiel    schedule 16.04.2014
comment
Спасибо, это, вероятно, сработает ... Но что, если у меня есть несколько входов 5,6 на строку? - person code_pretty; 16.04.2014
comment
В этом случае вам, вероятно, потребуется определить идентификаторы в bean-компоненте, а затем получить их. Для этого вы можете использовать атрибут data. - person Makhiel; 16.04.2014