2 Replies Latest reply on Aug 4, 2007 5:58 AM by paata lominadze

    modalpanel and ajax action problem (rf 3.1.0)

    paata lominadze Master

      good day.
      i tried to use modal panel for editing datatable.
      i have some input fields into the modal panel and fill them by onshow javascript event, after changes i have a4j:commandButton and trying to save changed fields, but i can't get values into backing bean. my code snippets :


      1. view.xhtml (containing modal panel)

      <h:form id="pageForm">
       ......... (datatable view and so on..)
      </h:form>
      <h:form id="modalForm">
       <a4j:region id="modalRegionId">
       <modPanel:modalPanel id="mp" moveable="true" height="115" width="310" zindex="2000"
       onshow="document.getElementById('modalForm:prpNameModal').value=event.parameters.propName;
       document.getElementById('modalForm:prpIdModal').value=event.parameters.propId;">
      
       <f:facet name="header">
       <h:outputText value="Edit Properties" />
       </f:facet>
       <f:facet name="controls">
       <h:graphicImage value="/img/close.png" style="cursor:pointer" onclick="Richfaces.hideModalPanel('mp')" />
       </f:facet>
       <table border="0" cellpadding="0" cellspacing="0" width="100%">
       <tr>
       <td>
       <h:outputLabel for="prpIdModal">Property Id</h:outputLabel>
       </td>
       <td>
       <h:inputText id="prpIdModal" disabled="true" styleClass="inputfield" style="width:100%"/>
       </td>
       </tr>
       <tr><td style="height:5px;"></td></tr>
       <tr>
       <td>
       <h:outputLabel for="prpNameModal">Property Title</h:outputLabel>
       </td>
       <td>
       <h:inputText id="prpNameModal" value="#{property.propertyName}" styleClass="inputfield" style="width:100%"/>
       </td>
       </tr>
       <tr><td style="height:12px;"></td></tr>
       <tr>
       <td align="right" colspan="2">
       <a4j:status id="submitStatusId" for="modalRegionId" startText="Saving ... " stopText="">
       </a4j:status>
      
      
       <a4j:commandButton id="submitAdmModalWindow"
       reRender="blaaaaaaa,prop"
       action="#{propertyBean.editProperty}"
       oncomplete="windowclose();"
       value="Save"/>
      
       <input type="button" onclick="windowclose();" value="Cancel" />
       </td>
       </tr>
       <tr>
       <td align="right" colspan="2">
       <a4j:outputPanel ajaxRendered="true">
       <h:messages id="modalError"/>
       </a4j:outputPanel>
       </td>
       </tr>
       </table>
       </modPanel:modalPanel>
       </a4j:region>
       <script language="javascript" type="text/javascript">
       //<![CDATA[
       var link = document.getElementById('modalForm:mpLastHref');
       link.parentNode.removeChild(link);
      
       function windowclose(){
       if (document.getElementById('modalForm:modalError')==null){
       Richfaces.hideModalPanel('modalForm:mp');
       };
       };
       //]]>
       </script>
       </h:form>
      

      2. backing bean :
      @Stateful
      @Name("propertyBean")
      public class PropertyManBean implements PropertyMan{
      
       @PersistenceContext
       EntityManager em;
      
       @DataModel
       List<Property> properties;
      
       @DataModelSelection
       private Property selectedProperty;
      
       boolean propertyCount;
      
       @In(create=true)
       Property property;
      
       @In Identity identity;
      
       public List<Property> getProperties() {
       properties = (List<Property>)em.createNamedQuery("Property.findAll").getResultList();
       setSize(properties.size());
       return properties;
       }
      
       public void setProperties(List<Property> properties) {
       this.properties = properties;
       }
       public void editProperty(){
       Users user = (Users)sessionContext.get("currentUser");
       System.out.println("user = "+user);
       System.out.println("property = "+property);
       System.out.println("property = "+property.getPropertyName());
       }
       public void removeProperty(){
       System.out.println(selectedProperty);
       System.out.println(selectedProperty.getPropertyName());
       System.out.println(selectedProperty.getId());
       }
      
       public void addProperty(){
       try {
       property.setRecStatus(new Long(1));
       property.setRegDate(new java.sql.Date(System.currentTimeMillis()));
       property.setRemark("Property Parameter For User");
       ...................................................................................
       em.persist(property);
       } catch (Exception e) {
       FacesMessages.instance().add("Could not Register. Please Trye Again");
       }
       }
      
       @Remove
       @Destroy
       public void destroy() {}
      }
      


      i have addproperty action outside modal panel and it works, but edit property into modal panel does not work, into backing bean, there is not property field values :(


      i like modal panel component so much and want to use it.
      can anybody help me ?
      is there anything incorrect ?


      __________________
      Regards,
      Paata