请这是非常重要我遇到了大麻烦,我试图解决它4天前没有成功。 我有一个使用cellEdit的主要面孔DataTable 但是当我尝试获取值时,它会在我更改之前得到相同的值。
<center>
<h:form >
<p:calendar value="#{programmeBean.date1}" showOn="button" pattern="yyyy-MM-dd" />
<p:commandButton value="OK" type="Submit" actionListener="#{programmeBean.click}" update=":content:cld:data1" />
</h:form>
<br/><br/>
</center>
<p:growl id="msgs" showDetail="true"/>
<p:commandButton styleClass="button" value="Ajouter" oncomplete="PF('v_dialogCreatInter').show();" update=":content:dialogCreatInter" />
<p:dataTable id="data1" var="proginter" value="#{programmeBean.listeAll}"
editable="true"
editMode="cell"
widgetVar="cellInter"
styleClass="hovered striped table tblDataTable"
rowStyleClass="#{proginter.programme.operationSuivante lt programmeBean.date1 ? 'colorR' :'no' }"
>
<!--editer la ligne selectionner-->
<p:ajax event="cellEdit" listener="#{programmeBean.onCellEdit(proginter)}" update=":content:cld:msgs" />
<f:facet name="header" class="ui-toolbar ui-widget-header" >
<h:outputText value=" Search all fields: " styleClass="searchOutputText" style="font-size: 1.2em"/>
<p:inputText id="globalFilter" onkeyup="PF('cellInter').filter()" placeholder="Enter keyword" styleClass="searchInputText" style="font-size: 1.2em" />
</f:facet>
<p:column sortBy="#{proginter.programme.equipement.designation}" filterBy="#{proginter.programme.equipement.designation}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab">Equipement</span>
</f:facet>
<h:outputText value="#{proginter.programme.equipement.designation}" />
</p:column>
<p:column sortBy="#{proginter.programme.designation}" filterBy="#{proginter.programme.designation}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab"> Designation Programme</span>
</f:facet>
<h:outputText value="#{proginter.programme.designation}" />
</p:column>
<p:column sortBy="#{proginter.programme.descriptif}" filterBy="#{proginter.programme.descriptif}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab" >Descriptif Programme</span>
</f:facet>
<h:outputText value="#{proginter.programme.descriptif}" />
</p:column>
<p:column sortBy="#{proginter.programme.operationSuivante}" filterBy="#{proginter.programme.operationSuivante}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab" >Date Opération</span>
</f:facet>
<h:outputText value="#{proginter.programme.operationSuivante}" />
</p:column>
<p:column sortBy="#{proginter.type}" filterBy="#{proginter.type}" filterMatchMode="contains" >
<f:facet name="header">
<span class="nomColonneTab">Type Intervention </span>
</f:facet>
<p:cellEditor >
<f:facet name="output">
<p:outputLabel value="#{proginter.type}"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu style="width:80px" value="#{proginter.type}" editable="#{(proginter.type!=null)? programmeBean.dis():proginter.type}">
<f:selectItem itemLabel="Interne" itemValue="Interne" />
<f:selectItem itemLabel="Externe" itemValue="Externe" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{proginter.interventioninterne.descriptif}" filterBy="#{proginter.interventioninterne.descriptif}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab">Descriptif Intervention</span>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputLabel value="#{proginter.interventioninterne.descriptif}" />
<h:outputLabel value="#{proginter.interventionexterne.descriptif}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{(proginter.interventionexterne.descriptif==null)? proginter.interventioninterne.descriptif:proginter.interventionexterne.descriptif}" style="width:100%"
disabled="#{(proginter.interventionexterne.descriptif==null and proginter.interventioninterne.descriptif==null )?false:true}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{proginter.interventioninterne.personnel.nom}" filterBy="#{proginter.interventioninterne.personnel.nom}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab">Personnel</span>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText id="rare" value="#{proginter.interventioninterne.personnel.nom} " />
</f:facet>
<f:facet name="input">
<h:inputText value="#{proginter.interventioninterne.personnel.nom}" disabled="#{(proginter.interventioninterne.personnel.nom !=null )? programmeBean.dis():proginter.interventioninterne.personnel.nom}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{proginter.interventionexterne.fournisseur.nom}" filterBy="#{proginter.interventionexterne.fournisseur.nom}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab">Société</span>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{proginter.interventionexterne.fournisseur.nom}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{proginter.interventionexterne.fournisseur.nom}" disabled="#{(proginter.interventionexterne.fournisseur.nom!=null)? programmeBean.dis():proginter.interventionexterne.fournisseur.nom}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{proginter.retard}" filterBy="#{proginter.retard}" filterMatchMode="contains" >
<f:facet name="header" >
<span class="nomColonneTab" >Retard(/jr)</span>
</f:facet>
<h:outputText value="#{proginter.retard}" />
</p:column>
<p:column>
<f:facet name="header">
<span class="nomColonneTab">Validation </span>
</f:facet>
<p:selectBooleanButton id="value1" value="#{interventionBean.value1}" onLabel="Oui" offLabel="Non" style="width:50px">
<p:ajax update="value1" listener="#{interventionBean.modifier(proginter)}" />
</p:selectBooleanButton>
</p:column>
</p:dataTable>
</h:form>
public List<InterProgClass> getListeAll() {
this.click();
return listeAll;}
public void click() {
listeAll.clear();
//listeAll = new ArrayList<>();
for (Programme p : pfl.findByDate(date1)) {
InterProgClass inter = new InterProgClass();
inter.setIntervention(new Intervention());
inter.setProgramme(p);
int r = (int) (date1.getTime() - p.getOperationSuivante().getTime()) / (1000 * 60 * 60 * 24);
inter.setRetard(r);
listeAll.add(inter);
}
for (InterventionInterne ii : pfl.findInterv(date1)) {
InterProgClass inter = new InterProgClass();
inter.setProgramme(ii.getProgramme());
for (InterProgClass i : listeAll) {
if (i.getProgramme().getIdIntervention() == inter.getProgramme().getIdIntervention()) {
i.setInterventioninterne(ii);
if(ii.getRetard()!=null)
i.setRetard(ii.getRetard());
i.setType("Interne");
}
}
}
for (InterventionExterne iex : pfl.findIntervEx(date1)) {
InterProgClass inter = new InterProgClass();
inter.setProgramme(iex.getProgramme());
for (InterProgClass i : listeAll) {
if (i.getProgramme().getIdIntervention() == inter.getProgramme().getIdIntervention()) {
i.setInterventionexterne(iex);
i.setType("Externe");
}
}
}
}
public Intervention returnFromList(List<Intervention> l, Date d) {
Intervention in = new Intervention();
for (Intervention intervention : l) {
if (intervention.getDateOperation().equals(d)) {
in = intervention;
}
}
return in;
}
@ManagedBean(name = "interProgClass")
@ApplicationScoped
public class InterProgClass implements Serializable{
//Attributes
private Programme programme;
private String designationProg;
private String descriptifProg;
private String descriptifIntervention;
private Date dateOp;
private Equipement equipement;
private InterventionInterne interventioninterne;
private InterventionExterne interventionexterne;
private Intervention intervention;
private Personnel personnel;
private String type;
private int retard;
private List<Personnel> per;
private String test;
//Constructeurs
public InterProgClass(){ }
public String getDescriptifIntervention() {
return descriptifIntervention;
}
public void setDescriptifIntervention(String descriptifIntervention) {
this.descriptifIntervention = descriptifIntervention;
}
//Getters & Setters
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
public Programme getProgramme() {
return programme;
}
public void setProgramme(Programme programme) {
this.programme = programme;
}
public String getDesignationProg() {
return designationProg;
}
public void setDesignationProg(String designationProg) {
this.designationProg = designationProg;
}
public String getDescriptifProg() {
return descriptifProg;
}
public void setDescriptifProg(String descriptifProg) {
this.descriptifProg = descriptifProg;
}
public Date getDateOp() {
return dateOp;
}
public void setDateOp(Date dateOp) {
this.dateOp = dateOp;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Equipement getEquipement() {
return equipement;
}
public void setEquipement(Equipement equipement) {
this.equipement = equipement;
}
public InterventionInterne getInterventioninterne() {
return interventioninterne;
}
public void setInterventioninterne(InterventionInterne interventioninterne) {
this.interventioninterne = interventioninterne;
}
public InterventionExterne getInterventionexterne() {
return interventionexterne;
}
public void setInterventionexterne(InterventionExterne interventionexterne) {
this.interventionexterne = interventionexterne;
}
public Intervention getIntervention() {
return intervention;
}
public void setIntervention(Intervention intervention) {
this.intervention = intervention;
}
public Personnel getPersonnel() {
return personnel;
}
public void setPersonnel(Personnel personnel) {
this.personnel = personnel;
}
public int getRetard() {
return retard;
}
public void setRetard(int retard) {
this.retard = retard;
}
public List<Personnel> getPer() {
return per;
}
public void setPer(List<Personnel> per) {
this.per = per;
}
}
答案 0 :(得分:0)
您想在什么情况下提交? 我看到你最后有一个未贴上的标签,这是正常的吗?
如果要使用修改后的值更新managedBean,则需要某种方法告诉ManagedBean您要更新它。常规的InputText不会从前端到ManagedBean执行dataBinding。
执行此操作的一种方法是使用表单。
在提交时,表单内的InputFields的值将在后端更新。因此,在您的情况下,您需要将dataTable放在一个包含要提交的按钮的表单中,例如:
<h:form >
<p:commandButton value="OK" type="Submit" actionListener="#{programmeBean.click}" update=":content:cld:data1" />
<p:dataTable>
YOUR DATABLE....
</p:dataTable>
</h:form>