I am doing a page on Primefaces. It has a datatable with single selection, and when i do clic on a button, it shows a Dialog.
If he dialog only shows labels with ouputtext, it works fine, but if I change the labels for inputtexts, the button doesn't update the dialog.
This is mi xhtml file:
<p:dataTable id="deportes" var="deporte" value="#{deporteBean.deportesModel}" rowKey="#{deporte.idDeporte}"
selection="#{deporteBean.deporteActual}" selectionMode="single">
<f:facet name="header">
<h:outputLabel value="#{messages.sports_info_edit}"/>
</f:facet>
<p:column headerText="#{messages.sports_general_name}">
#{deporte.idDeporte}
</p:column>
<p:column headerText="#{messages.sports_general_name}">
#{deporte.nombre}
</p:column>
<p:column headerText="#{messages.sports_general_description}" >
#{deporte.descripcion}
</p:column>
<f:facet name="footer">
<p:commandButton action="#{deporteBean.updateInfo}" actionListener="#{deporteBean.updateInfo}" id="viewButton" value="#{messages.sports_info_viewDetail}" icon="ui-icon-search"
oncomplete="deporteDialog.show()" update=":form:display" />
</f:facet>
</p:dataTable>
<p:dialog id="dialog" header="Detalle del deporte" widgetVar="deporteDialog" resizable="false"
width="400" showEffect="clip" hideEffect="fold" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" >
<f:facet name="header">
<h:outputText value="#{deporteBean.deporteActual.nombre}" />
</f:facet>
<h:outputText value="Id" />
<h:outputText value="#{deporteBean.deporteActual.idDeporte}" />
<h:outputText value="Nombre:" />
<h:outputText id="txtNombre" value="#{deporteBean.deporteActual.nombre}" />
<h:outputText value="Descripcion:" />
<h:inputText value="#{deporteBean.deporteActual.descripcion}" />
</h:panelGrid>
<p:commandButton id="aceptarButton" value ="#{messages.sports_info_save}" icon="ui-icon-disk"
action="#{deporteBean.save}" immediate="true"
update=":form:display" oncomplete="deporteDialog.hide()">
</p:commandButton>
</p:dialog>
And this is my Bean (in faces.config.xml his scope is view):
package com.sportsWorld.web.view;
import java.util.ArrayList;
import java.util.List;
import dtorres.gymAdmin.dto.*;
public class DeporteBean {
private List<Deporte> deportes;
private Deporte deporteActual;
private DeporteDataModel deportesModel;
public DeporteBean (){
deportes = new ArrayList<Deporte>();
deportes.add(new Deporte(1,"Tenis de mesa","Velocidad, precisión, concentración y reacción en el deporte más difícil del mundo."));
deportes.add(new Deporte(2,"Fútbol 5","Lo mejor del deporte rey en un espacio pequeño"));
deportes.add(new Deporte(3,"Escalada","Fuerza, concentración y equilibrio se ponen a prueba en este magnfífico deporte para quienes no temen a las alturas"));
deportes.add(new Deporte(4,"Natación","Bla bla bla"));
deportes.add(new Deporte(5,"Gimnasio","Bla bla bla"));
deportes.add(new Deporte(6,"Spinning","Bla bla bla"));
deportes.add(new Deporte(7,"Bolos", "Bla bla bla"));
deporteActual = null;
deportesModel = new DeporteDataModel(deportes);
}
public List<Deporte> getDeportes() {
return deportes;
}
public void setDeportes(List<Deporte> deportes) {
this.deportes = deportes;
}
public Deporte getDeporteActual() {
return deporteActual;
}
public void setDeporteActual(Deporte deporteActual) {
this.deporteActual = deporteActual;
}
public DeporteDataModel getDeportesModel() {
return deportesModel;
}
public void setDeportesModel(DeporteDataModel deportesModel) {
this.deportesModel = deportesModel;
}
public void save(){
System.out.println(deporteActual.getNombre());
}
public void updateInfo(){
System.out.println("Entra a UpdateInfo");
System.out.println("UpdateInfo + " + deporteActual.getNombre());
}
}
The updateInfo method is only for debug purposes, the point is that when I change the line in the xhtml for it works fine... Thanks a lot!!
Sorry for my english!