2016-01-20 2 views
0

Вид:р: DataTable cellEdit Ajax вызов не вызывает Действие

<h:form> 
<p:dataTable rows="10" id="analysisListTable" value="#{analyses}" var="anl" resizableColumns="true" editable="true" editMode="cell"> 

    <p:ajax event="cellEdit" listener="#{analysisBean.onCellEdit}" /> 

    <p:column headerText="Aktif" footerText="Aktif" sortBy="#{anl.active}" width="40" styleClass="TexAlCenter"> 
     <p:cellEditor> 
      <f:facet name="output"> 
       <h:outputText value="#{anl.active?' Evet':' Hayır'}"/> 
      </f:facet> 
      <f:facet name="input"> 
       <h:selectBooleanCheckbox value="#{anl.active}" title="Aktif"></h:selectBooleanCheckbox> 
      </f:facet> 
     </p:cellEditor> 
    </p:column> 

Действие:

import org.primefaces.event.CellEditEvent; 

import org.jboss.seam.ScopeType; 
import org.jboss.seam.annotations.Factory; 
import org.jboss.seam.annotations.Name; 
import org.jboss.seam.annotations.Out; 
import org.jboss.seam.annotations.Scope; 
import org.jboss.seam.annotations.datamodel.DataModel; 
import org.jboss.seam.annotations.datamodel.DataModelSelection; 
import org.mockingjay.bird.AnalysisBeanInterface; 
import org.mockingjay.bird.Model.Analysis.Analysis; 

import javax.ejb.Remove; 
import javax.ejb.Stateful; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 
import java.util.List; 

/** 
* Created by Erhan FIRAT on 15.01.2016. 
*/ 

@Stateful 
@Name("analysisBean") 
@Scope(ScopeType.SESSION) 
public class AnalysisBean implements AnalysisBeanInterface { 

@PersistenceContext 
private EntityManager em; 

@DataModel 
private List<Analysis> analyses; 

@DataModelSelection 
@Out(required=false) 
private Analysis analysis; 


@Factory("analyses") 
public void findAnalyses(){ 
    analyses = em.createQuery("select anl from Analysis anl").getResultList(); 
} 


public void onCellEdit(CellEditEvent event) { 
    Object oldValue = event.getOldValue(); 
    Object newValue = event.getNewValue(); 

    System.out.println(analysis.title + " > Active = " + analysis.isActive() + " olarak kaydedildi."); 
} 

При запуске сервера, DataTables поставляются с DATAS. И когда я нажимаю на ячейку, она изменяется от outputText до selectBooleanCheckbox. Однако, когда я меняю, он не вызывает действие onCellEdit.

+0

Сообщите свой импорт. – Kukeltje

+0

он разрабатывается в Seam Framework. Эти аннотации выглядят нормально в соответствии с документацией здесь: https://docs.jboss.org/seam/latest/reference/html/tutorial.html – efirat

+0

возможно, новое логическое значение не получает немедленно отправлено –

ответ

1

Вы должны попробовать «AjaxBehaviourEvent» вместо «CellEditEvent», вы можете снова включить его в функцию. Это решило аналогичную проблему.

+0

Я попытался, но сделал не работает для меня ... – efirat

+0

Прошу прощения за это :(Я сообщу, если у меня есть другая идея. – Lule

+0

Вы пытались использовать это событие для booleanCheckbox? – Lule