У меня есть запрос ajax, который выводит мне dataTable и формирует каждую строку. Я также хочу запустить кнопку. При этом не запускается какое-либо событие, и я думаю, что это потому, что вторая кнопка находится на другом уровне, чем первая кнопка поиска. JSF выглядит примерно так:JSF Ajax CommandButton на другом уровне
<h:from>
<h:inputText id="search"
value="#{profileController.searchName}"/>
<h:commandButton value="Search by name"
action="#{profileController.searchProfileWithName(profileController.searchName)}">
<f:ajax execute="search"
render="output">
</f:ajax>
</h:commandButton>
<h:dataTable id="output"
value="#{profileController.searchResultList}"
var="p">
<h:column>
<f:facet name="header">Name</f:facet>
<h:outputText value="#{p.name}"/>
</h:column>
<h:column>
<f:facet name="header">Action</f:facet>
<h:commandButton value="Invite"
action="#{trainingController.inviteProfile(p)}">
<f:ajax/>
</h:commandButton>
</h:column>
</h:dataTable
</h:form>
JSF Managed Bean (requestScoped):
public String searchProfileWithName(String name) {
searchResultList = profileBean.findProfilesWithName(name);
return null;
}
ProfileBean (лица без гражданства):
public List<Profile> findProfilesWithName(String name) {
Query query = em.createNamedQuery("findProfilesWithName");
query.setParameter("name", "%" + name.replace(" ", "%") + "%");
return query.getResultList();
}
Любой идеи в этом?
Вы проверили http://stackoverflow.com/questions/2118656/commandlink-commandbutton-backing-bean-action-method-not-invoked/2120183#2120183 ? – Smutje
да, я проверил его. Не помогает мне – perotom
Почему вы проходите «trainingController.currentTraining» через EL, если 'currentTraining'is уже находится в бэкэнде? Почему бы просто не использовать его из бэк-бэка и передать 'p' только ?. Вы также должны опубликовать свой бэкбон здесь, чтобы показать, как вы заполняете этот список. * Что-то * из списка @Smutje опубликовано должно быть применимо к вам. В этой статье рассматривается все возможное. – kolossus