problem when trying to save data with a4j:commandButton
redsky Sep 11, 2009 8:03 PMhi i got a main page ==>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en"> <body> <ui:composition template="../../index.xhtml"> <ui:define name="content"> <script type="text/javascript"> function popUpPage() { jQuery("#dialog").dialog({ autoOpen: true, title: 'Basic Dialog' }); jQuery('#content\\:showTP\\:test').click(function() { jQuery("#dialog").dialog('open'); }); } </script> <h:form id="showTP"> <rich:dataTable align="center" id="tarifGroup" value="#{showTariffGroupView.tariffGroupList}" var="tariffGroup" rows="10"> <rich:column> <f:facet name="header"> <f:verbatim>Tariff Group Name</f:verbatim> </f:facet> <h:outputText value="#{tariffGroup.tariffgroupname}" /> </rich:column> <rich:column> <f:facet name="header"> <f:verbatim>Creation Date</f:verbatim> </f:facet> <h:outputText value="#{tariffGroup.creationdate}" /> </rich:column> <rich:column> <f:facet name="header"> <f:verbatim>Lcr Type</f:verbatim> </f:facet> <h:outputText value="#{tariffGroup.lcrtype}" /> </rich:column> </rich:dataTable> <a4j:commandButton id="test" value="test*****" onclick="popUpPage();" > <f:setPropertyActionListener value="Add" target="#{showTariffGroupView.action}" /> </a4j:commandButton> <div id="dialog" style="display:none;" > <a4j:include viewId="addTP.jsp"></a4j:include> </div> <rich:datascroller align="left" for="tarifGroup" maxPages="20"/> </h:form> <rich:modalPanel top="50" id="editUserConf" autosized="true" width="450" > <f:facet name="header"> <h:panelGroup> <h:outputText value="Modal Panel"></h:outputText> </h:panelGroup> </f:facet> <f:facet name="controls"> <h:panelGroup> <h:graphicImage value="/images/delete.gif" styleClass="hidelink" id="hidelink"/> <rich:componentControl for="editUserConf" attachTo="hidelink" operation="hide" event="onclick"/> </h:panelGroup> </f:facet> <a4j:include viewId="addTP.jsp"> </a4j:include> </rich:modalPanel> </ui:define> </ui:composition> </body> </html>
which contain ass yu can see a <ui:include> addTP.jsp , which i popup using jquery
here is my addTP.jsp
<div xmlns="http://www.w3.org/1999/xhtml" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en"> <script type="text/javascript"> function ajaxRequestContainsErrors() { return document.getElementById("maximumSeverity").value == "2"; } function windowclose(){ console.log("printed") jQuery("#dialog").dialog("close"); }; </script> <a4j:outputPanel id="tadaaaaaaaa" ajaxRendered="false"> <table id="count"> <tr colspan="3"> <td> <h:messages styleClass="error" id="error_message" layout="table" infoClass="infoMessages" errorClasses="errorMessages" showDetail="true"></h:messages> </td> </tr> <tr> <td> <h:outputText value="Tarif Name: "></h:outputText> </td> <td> <h:inputText value="#{showTariffGroupView.currentItem.tariffgroupname}"> <rich:beanValidator summary="Invalid name" /> </h:inputText> </td> </tr> <tr> <td> <h:outputText value="LC TYPE: "></h:outputText> </td> <td> <h:selectOneMenu id="lcrtype" style="width:100%" value="#{showTariffGroupView.currentItem.lcrtype}" > <f:selectItem itemValue="**"/> <f:selectItem itemLabel="LCD: seller price" itemValue="0"/> <f:selectItem itemLabel="LCR: buyer price" itemValue="1"/> <!-- <f:selectItems value="#{showTariffGroupView.lcrList}"></f:selectItems> --> </h:selectOneMenu> </td> </tr> <tr> <td> <h:outputText value="Package: "></h:outputText> </td> <td> <h:selectOneMenu id="noPackage" style="width:100%" value="#{showTariffGroupView.currentItem.idPackageOffer}" > <f:selectItem itemValue="**"/> <f:selectItems id="pkGroupeLst" value="#{showTariffGroupView.packageGrou}"></f:selectItems> </h:selectOneMenu> </td> </tr> <tr> <td> <h:outputText value="Interprefix "></h:outputText> </td> <td> <h:selectOneRadio id="interprefix" value="#{showTariffGroupView.currentItem.removeinterprefix}"> <f:selectItem id="item1" itemLabel="remove Prefix" itemValue="0" /> <f:selectItem id="item2" itemLabel="Keep Prefix" itemValue="1" /> </h:selectOneRadio> </td> </tr> </table> <table align="center"> <tr> <td> <a4j:commandButton action="#{showTariffGroupControl.saveRow}" oncomplete="windowclose();" value="Save" reRender="tarifGroup"> </a4j:commandButton> </td> <td> <a4j:commandButton onclick="windowclose();" value="Cancel" reRender="tarifGroup"></a4j:commandButton> </td> </tr> </table> </a4j:outputPanel> </div>
the problem when i press the button save in the popued window , the backed bean receive null from the jsp ; here is my saveRow function:
public void saveRow(){ AddRow(); System.out.println("*1*"); if (view.action.compareTo("Edit") == 0){ System.out.println("Edit"); System.out.println("before add"); foxManager.makePersistent(view.currentItem); System.out.println("after add"); } else{ if(view.action.compareTo("Add") == 0){ System.out.println("Add"); System.out.println("before add"); view.currentItem.setIduser(0); view.currentItem.setIdPackageOffer(new Long(1)); //view.currentItem.setLcrtype(1); //view.currentItem.setRemoveinterprefix(1); //view.currentItem.setTariffgroupname("sdsadd"); System.out.println("debug***"+view.currentItem); System.out.println("debug"+view.currentItem.getTariffgroupname()); System.out.println("debug"+view.currentItem.getLcrtype()); System.out.println("debug"+view.currentItem.getIdPackageOffer()); System.out.println("debug"+view.currentItem.getRemoveinterprefix()); foxManager.makePersistent(view.currentItem); System.out.println("after add"); } else System.out.println("none"); } } public void AddRow(){ System.out.println("-----AddRow------"); view.currentItem = new TariffGroup(); }
when i press here is the output of the console :
-----AddRow------ *1* Add before add debug***com.foxManager.core.persistence.model.TariffGroup@268d15 debugnull debugnull debug1 debugnull
for my faces-config:
<managed-bean> <managed-bean-name>showTariffGroupControl</managed-bean-name> <managed-bean-class>com.foxManager.bean.control.ShowTariffGroupControl</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>view</property-name> <value>#{showTariffGroupView}</value> </managed-property> </managed-bean> <managed-bean> <managed-bean-name>showTariffGroupView</managed-bean-name> <managed-bean-class>com.foxManager.bean.view.ShowTariffGroupView</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
and thanks a lot