<p:ajax> Impossible de joindre <p:ajax> à la non-ClientBehaviorHolder parent
- Je utiliser JSF 2 , primefaces 4.0 et j'essaie d'utiliser DataTable En Cellule d'Édition comme elle est produite dans primefaces vitrine, mais j'ai une erreur alors que j'ai copié l'exemple montré dans la vitrine
l'erreur est
<p:ajax> Unable to attach <p:ajax> to non-ClientBehaviorHolder parent
c'est le xhtmlpagecode
<rich:panel style="width : 800px; height : 551px; " >
<f:facet name="header" >
<h:outputText value="Tableau des articles" align="center" style="FONT-SIZE: small;"/>
</f:facet>
<h:form id="form">
<p:dataTable id="cars" var="car" value="#{articlesbean.LMatpilotaccess1}" editable="true" editMode="cell" widgetVar="carsTable">
<f:facet name="header">
Matériel du pilotage et accessoires
</f:facet>
<p:growl id="messages" showDetail="true"/>
<p:contextMenu for="cars" widgetVar="cMenu">
<p:menuitem value="Edit Cell" icon="ui-icon-search" onclick="PF('carsTable').showCellEditor();return false;"/>
<p:menuitem value="Hide Menu" icon="ui-icon-close" onclick="PF('cMenu').hide()"/>
</p:contextMenu>
<p:column headerText="Serie" style="width:25%">
<p:ajax event="cellEdit" listenner="#{articlesbean.onCellEdit}" update=":form:messages" />
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{car.serie}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput" value="#{car.serie}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
</h:form>
</rich:panel>
et c'est mon haricot
@ManagedBean(name="articlesbean")
@ViewScoped
public class ArticlesBean implements Serializable{
@Inject
private ArticlesDAO articleDAO;
@Inject
private Matpilotaccess1 matpilotaccess1;
@Inject
private Matpilotaccess2 matpilotaccess2;
@Inject
private Poteaux poteaux ;
@Inject
private Travgc1 travgc1;
@Inject
private Travgc2 travgc2;
@Inject
private Travresurbain travresurbain;
private List LMatpilotaccess1 = new ArrayList();
private List LMatpilotaccess2 = new ArrayList();
private List LPoteaux = new ArrayList();
private List LTravgc1 = new ArrayList();
private List LTravgc2 = new ArrayList();
private List LTravresurbain = new ArrayList();
public void onCellEdit(CellEditEvent event) {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
if(newValue != null && !newValue.equals(oldValue)) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
////Getters and setters
OriginalL'auteur Bellil Med Samouel | 2013-11-13
Vous devez vous connecter pour publier un commentaire.
Vous imbriqués les
<p:ajax>
à l'intérieur d'un<p:column>
. Le<p:ajax>
nécessite d'être encapsulé dans un composant de la mise en œuvre de laClientBehaviorHolder
de l'interface. Cependant, laColonne
de la classe du composant derrière<p:column>
ne pas la mettre en œuvre. LeDataTable
de la classe du composant derrière<p:dataTable>
la met en œuvre.Vous devez être nidification
<p:ajax>
à l'intérieur de<p:dataTable>
à la place:Exactement comme l'a démontré sur leur site vitrine. En d'autres termes, votre déclaration
est en fait pas vrai.
OriginalL'auteur BalusC