2014-10-07 116 views
0

我有一個ajax請求輸出我一個dataTable和形式每行我也想執行一個button.Sadly沒有事件被調用,我認爲這是因爲第二個按鈕是在不同的級別比第一個搜索按鈕。 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受管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(); 
} 

任何人的想法?

+0

你檢查http://stackoverflow.com/questions/2118656/commandlink-commandbutton-backing-bean-action-method-not-invoked/2120183#2120183 ? – Smutje 2014-10-07 10:38:21

+0

是的,我檢查了它。不幫助我 – perotom 2014-10-07 15:47:36

+0

如果'currentTraining'已經在backing bean中,你爲什麼通過EL傳遞'trainingController.currentTraining'?爲什麼不從支持bean中使用它並僅傳遞'p'?你也應該在這裏發佈你的支持bean,以展示你如何填充這個列表。 *發佈的@Smutje列表中的*必須適用於您。這篇文章涵蓋了所有可能的內容。 – kolossus 2014-10-09 00:40:43

回答