Bel*_*uel 7 ajax jsf primefaces jsf-2
我使用JSF 2,primefaces 4.0,我尝试使用DataTable - In-Cell Editing,因为它是在primefaces展示中生成的,但我有一个错误,虽然我复制了showcase中显示的相同示例错误是
<p:ajax> Unable to attach <p:ajax> to non-ClientBehaviorHolder parent
Run Code Online (Sandbox Code Playgroud)
这是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>
Run Code Online (Sandbox Code Playgroud)
这是我的豆子
@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
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 13
你在<p:ajax>里面嵌套了一个<p:column>.该<p:ajax>要求被嵌套在实现的组件ClientBehaviorHolder接口.但是,后面的Column组件类<p:column>没有实现它.后面的DataTable组件类<p:dataTable>实现它.
你应该在<p:ajax>里面嵌套<p:dataTable>:
<p:dataTable ...>
<p:ajax ... />
<p:column ...>
...
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
正如他们的展示网站上所展示的那样.换句话说,你的陈述
虽然我复制了展示中显示的相同示例
其实不是真的.
| 归档时间: |
|
| 查看次数: |
21706 次 |
| 最近记录: |