I have a datatable, a column with h:commandlink for edit (ajax request), the detail show in jquery dialog, everything ok, in the edit form i have h:commandlink (ajax request) for save, if i make changes eg, drop a value in input required, and push submit, jsf don't validate this input, and don't show the message "this input is required"
<div id="container">
<button id="create-user" >Create new user</button>
<h:dataTable value="#{gasweb.lsProveedor}" var="tabpro" id="example" class="display dataTable" >
<h:column>
<f:facet name="id">
<h:outputLabel value="Id"/>
</f:facet>
<h:outputText value="#{tabpro.proveedor_id}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Cedula"/>
</f:facet>
<h:outputText value="#{tabpro.cedula_ruc}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="NombreComercial"/>
</f:facet>
<h:commandLink value="#{tabpro.nombre_comercial}" actionListener="#{gasweb.doEditProveedor2}" class="labrir" >
<f:param name="pproveedor_id" value="#{tabpro.proveedor_id}" />
<f:ajax execute="@this" render=":forma:editgrid" >
</f:ajax>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Razon Social"/>
</f:facet>
<h:outputText value="#{tabpro.razon_social}"/>
</h:column>
</h:dataTable>
</div>
<div id="divformap" title="Proveedor">
<h:inputHidden value="#{gasweb.newRecord}" id="txtnewrecord" />
<h:inputHidden value="#{gasweb.ruc_proveedor_ori}" id="txtcedulaori" />
<h:panelGrid columns="2" id="editgrid" >
<h:outputLabel value="Id :" />
<h:outputText id="txtid" value="#{gasweb.proveedor.proveedor_id}" />
<h:outputLabel value="Ruc :" />
<h:inputText id="txtcedula" value="#{gasweb.proveedor.cedula_ruc}" size="20" class="text ui-widget-content ui-corner-all" />
<h:outputLabel value="Nombr Comercial :" />
<h:inputText id="txtnombre" value="#{gasweb.proveedor.nombre_comercial}" required="true" size="80" class="text ui-widget-content ui-corner-all"/>
<h:outputLabel value="Razón Social :" />
<h:inputText id="txtrazon" value="#{gasweb.proveedor.razon_social}" size="80" class="text ui-widget-content ui-corner-all"/>
<h:outputLabel value="Dirección :" />
<h:inputText id="txtdireccion" value="#{gasweb.proveedor.direccion}" size="80" class="text ui-widget-content ui-corner-all"/>
<h:outputLabel value="Telefono :" />
<h:inputText id="txttelefono" value="#{gasweb.proveedor.telefono}" size="20" class="text ui-widget-content ui-corner-all"/>
<h:outputLabel value="Estado :" />
<h:outputText id="txtestado" value="#{gasweb.proveedor.estado}" />
<h:commandButton id="aceptar" value="Aceptar" actionListener="#{gasweb.doGrabaProveedor}" >
<f:param name="pproveedor_id2" value="#{gasweb.proveedor.proveedor_id}" />
<f:ajax render="bProveedor" execute="@form" onevent="resetFocus" />
</h:commandButton>
<h:outputText id="bProveedor" value="#{gasweb.bProveedorExiste}" />
</h:panelGrid>
</div>
My managed bean
public class GasperWebMB implements Serializable{
private List<Contribuyente> lsContribuyente;
private List<Proveedor> lsProveedor;
private Contribuyente contribuyente;
private Proveedor proveedor;
private Declara serdec;
private FacesContext fc = FacesContext.getCurrentInstance();
private Boolean newRecord;
private String ruc_proveedor_ori;
private String bProveedorExiste;
//@ManagedProperty("#param.pproveedor_id")
//private Integer pproveedor_id;
//private HttpServletRequest request;
public GasperWebMB(){
serdec = new Declara();
contribuyente = new Contribuyente();
proveedor = new Proveedor();
lsContribuyente = serdec.getAllContribuyente();
lsProveedor = serdec.getAllProveedor();
newRecord = true;
log("creado");
//request.getHeader(ruc_proveedor_ori);
}
public String getbProveedorExiste() {
return bProveedorExiste;
}
public void setbProveedorExiste(String bProveedorExiste) {
this.bProveedorExiste = bProveedorExiste;
}
public String getRuc_proveedor_ori() {
log(ruc_proveedor_ori);
return ruc_proveedor_ori;
}
public void setRuc_proveedor_ori(String ruc_proveedor_ori) {
log(ruc_proveedor_ori);
this.ruc_proveedor_ori = ruc_proveedor_ori;
}
public Boolean getNewRecord() {
log(newRecord);
return newRecord;
}
public void setNewRecord(Boolean newRecord) {
log(newRecord);
this.newRecord = newRecord;
}
public List<Proveedor> getLsProveedor() {
log(lsProveedor);
return lsProveedor;
}
public void setLsProveedor(List<Proveedor> lsProveedor) {
log(lsProveedor);
this.lsProveedor = lsProveedor;
}
public Proveedor getProveedor() {
log(proveedor);
return proveedor;
}
public void setProveedor(Proveedor proveedor) {
log(proveedor);
this.proveedor = proveedor;
}
public List<Contribuyente> getLsContribuyente() {
return lsContribuyente;
}
public void setLsContribuyente(List<Contribuyente> lsContribuyente) {
this.lsContribuyente = lsContribuyente;
}
public Contribuyente getContribuyente() {
return contribuyente;
}
public void setContribuyente(Contribuyente contribuyente) {
this.contribuyente = contribuyente;
}
public String doEditContribuyente(){
Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
contribuyente = serdec.getContribuyenteById(Integer.parseInt(par));
newRecord = false;
ruc_proveedor_ori = proveedor.getCedula_ruc();
return "FContribuyente";
}
public String doGrabaContribuyente(){
System.out.println("grabar " + contribuyente.getCedula_ruc()+ " id " + contribuyente.getContribuyente_id());
serdec.updContribuyente(contribuyente);
return "lisContribuyente";
}
public String doEditProveedor(){
System.out.println("Entra");
Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
String par = params.get("pproveedor_id");
System.out.println("pro" + par);
proveedor = serdec.getProveedorById(Integer.parseInt(par));
newRecord = false;
System.out.println("va a salir");
return "editprov";
}
public void doGrabaProveedor(ActionEvent event){
System.out.println("gra"+proveedor.getNombre_comercial()+" new "+ newRecord);
Proveedor xpro = serdec.getProveedorByRuc(proveedor.getCedula_ruc());
if (xpro != null && !proveedor.getCedula_ruc().equals(ruc_proveedor_ori)){
System.out.println("Ya existe");
bProveedorExiste = xpro.getNombre_comercial();
//FacesContext.getCurrentInstance().validationFailed();
FacesMessage fmes = new FacesMessage("El Ruc "+proveedor.getCedula_ruc()+" ya se encuentra registrado para otro proveedor");
fc.addMessage(null, fmes);
//fc.addMessage("Proveedor ya existe", fmes);
//return "sucess";
return;
}
if (newRecord){
proveedor.setEstado("A");
//serdec.insProveedor(proveedor);
}
else {
//serdec.updProveedor(proveedor);
}
System.out.println("Si graba");
//return "sucess";
}
public void doEditProveedor2(ActionEvent event){
/*Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
String par = params.get("pproveedor_id");
proveedor = serdec.getProveedorById(Integer.parseInt(par));
newRecord = false;
return "FProveedor";*/
String pproveedor_id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("pproveedor_id");
proveedor = serdec.getProveedorById(Integer.parseInt(pproveedor_id));
newRecord = false;
System.out.println("si edit2 param "+ pproveedor_id + " new "+ newRecord);
System.out.println("si edit2 proveedor "+ proveedor.getNombre_comercial() + " new "+ newRecord);
}
private void log(Object object) {
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
System.out.println("Bean " + methodName + ": " + object);
}
}
In this code, dropped the jquery dialog and show detail in div