<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="content">
<center>
<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: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: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:ajax event="cellEdit" listenner="#{articlesbean.onCellEdit()}" update=":form:messages" />
<p:column headerText="Serie" style="width:25%">
<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:column headerText="Prix unitaire HTVA" style="width:25%">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{car.puhtva}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput5" value="#{car.puhtva}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Montant HTVA" style="width:25%">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{car.monthtva}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput8" value="#{car.monthtva}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Montant TTC" style="width:25%">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{car.montttc}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput9" value="#{car.montttc}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
</h:form>
</rich:panel>
</center>
</ui:define>
</ui:composition>
这是豆子
package com.pfe.controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.primefaces.component.datatable.DataTable;
import org.primefaces.event.CellEditEvent;
import com.pfe.data.ArticlesDAO;
import com.pfe.model.Matpilotaccess1;
import com.pfe.model.Matpilotaccess2;
import com.pfe.model.Poteaux;
import com.pfe.model.Travgc1;
import com.pfe.model.Travgc2;
import com.pfe.model.Travresurbain;
@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();
System.out.println("////////////////////////);
if(newValue != null && !newValue.equals(oldValue)) {
DataTable s = (DataTable) event.getSource();
Matpilotaccess1 d = (Matpilotaccess1) s.getRowData();
articleDAO.Updatetable(d);
System.out.println("///////////////////");
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
} ///// getters and setters
这里的问题是连//////////////////都没有显示,这意味着HTML代码中存在问题,阻止了onCellEdit函数的执行!!!
我认为您只有一个问题:您的代码没有调用您的articleBean.onCelleDit()方法。
下面是我的简单代码,它工作得很好(但我没有将richfaces组件与primefaces混合):
<h:form id="testForm">
<p:growl id="messages" showDetail="true"/>
<p:outputPanel id="testContainer">
<p:dataTable id="testTable" value="#{tableBean.data}" var="entry" editable="true" editMode="cell">
<p:ajax event="cellEdit" listener="#{tableBean.onCellEdit}" process="@this" update=":testForm:messages"/>
(...)
用户在表中编辑后会正确显示该消息。请尝试将richfaces面板替换为primefaces面板可能会出现此问题。
如果在p:ajax中有一些更新问题,可以使用RemoteCommand。但在这种情况下,您需要重新设计articlesbean中的方法,以便:
public void onCellEdit() {
//do some thing
<p:remoteCommand name="onCellEdit" action="#{articlesbean.onCellEdit()}" update=":form:messages" />
<p:dataTable id="cars" var="car" value="#{articlesbean.LMatpilotaccess1}" editable="true" editMode="cell" widgetVar="carsTable">
(...)
<p:ajax event="cellEdit" oncomplete="onCellEdit()" />
我有一个带有单元格编辑的primefaces datatable,它可以在视图中的一个布尔变量上切换。 我有三个问题: 在编辑模式下,我更改了一个值,然后单击页面上的“保存”按钮,它不会保留新值,如果我先单击页面上的任何其他位置,然后单击“保存”,它将保留该值。如果您先单击“保存”,我需要它来保留值。 如果我编辑了一个输入文本的单元格,然后我单击了它,那么该字段现在就是一个输出文本,直到我再次单击
我有一个带有单元格编辑功能的数据表,我想通过应用一个不同样式的类来更新数据表以显示修改后的记录。 以下是我的问题: 如果在激发onCellEdit事件时未更新数据表,则记录已正确更新,但无法看到已修改行的applyed style类。 如果在onCellEdit事件激发时更新数据表,并使用return键更新值,则一切正常,并且可以看到修改行的应用样式类。 如果我在单元格编辑事件触发时更新数据表,并
在我的datatable中,根据列“Délai Action”,当没有日期时,其他列必须是红色的。最后一列有一个黄色/橙色/红色的球图标,取决于日期。那么如何更新行,然后显示红色或不红色的列和对应的色球呢? 我尝试了不同的方法,比如: 也可以在我的enregistrer()方法中使用: 提前致谢 Primefaces 6.0/JSF 2.3
我有行编辑的dataTable,但我不需要编辑我的一个单元格(user.username)。我怎样才能做到这一点?这可能吗?我尝试删除一个单元格的p:cellEditor,但它在我的平板电脑上不起作用,因为当我在DataTable中使用它时,该列为空。 谢谢 我的代码:
我想在单击该行中的一个按钮后更新primefaces数据表中的一列。 我的jsf页面: 我的访客Bean: visitService将间隙从OK更改为NOK,但我的datatables列没有更改。有什么想法吗? 表面5.2 我已经研究了如何只更新primefaces数据表中的特定单元格,但这似乎并没有解决它。
问题内容: 我正在使用ui网格编辑单元格功能。我需要使用rest api将编辑后的单元格值更新到数据库。另外,我如何获得在控制器中选择的行的列表。 我的工作代码 柱塞 问题答案: 将以下内容添加到您的控制器: 您拥有有关(在中)编辑哪一列以及(在中)单元格的实际值的所有信息。 所有你现在要做的就是打电话给你的REST API(以避免不必要的流量,你也可以比较,以看是否真的内容变更)。 您不需要重新