2017-07-08 14 views
5

के लिए संपादन फ़ॉर्म बनाएं मैं प्राइमफ़ेस तालिका के लिए संपादन फ़ॉर्म बनाना चाहता हूं।प्राइमफ़ेस तालिका

<h:form id="form"> 
    <p:dataTable id="tbl" var="systemuser" value="#{systemusers.systemUsers}"         
       selectionMode="single" selection="#{systemusers.selectedSystemUser}" rowKey="#{systemuser.username}" lazy="true" 
       resizableColumns="true" 
       > 

     <p:ajax event="rowSelect" listener="#{systemusers.onRowSelect}" update=":form:carDetail" oncomplete="PF('carDialog').show()" /> 
     .................... 
    </p:dataTable> 

    <p:dialog id="wd" header="System User Details" widgetVar="carDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="true"> 
     <p:outputPanel id="carDetail" style="text-align:center;"> 
      <p:panelGrid columns="2" columnClasses="label,value"> 

       <h:outputLabel for="id" value="ID" /> 
       <p:outputLabel id="id" value="#{systemusers.selectedSystemUser.id}" rendered="#{not systemusers.editable}"/> 
       <h:inputText value="#{systemusers.selectedSystemUser.id}" rendered="#{systemusers.editable}" /> 
       ........ 
      </p:panelGrid> 
     </p:outputPanel> 

     <f:facet name="footer"> 
      <p:commandButton value="Edit System User" rendered="#{not systemusers.editable}" 
          actionListener="#{systemusers.editRecord(false)}"> 
       <f:ajax render=":form:wd" execute=":form:wd"></f:ajax> 
      </p:commandButton>&nbsp; 

      <p:commandButton value="Cancel" rendered="#{systemusers.editable}" actionListener="#{systemusers.editRecord(true)}"> 
       <f:ajax render=":form" execute=":form"></f:ajax> 
      </p:commandButton> 
     </f:facet> 
    </p:dialog> 

    <p:contextMenu for="tbl"> 
     <p:menuitem value="View" update="carDetail" icon="fa fa-search" oncomplete="PF('carDialog').show()"/> 
     <p:menuitem value="Delete" update="tbl" icon="fa fa-remove" actionListener="#{systemusers.deleteSystemUser}"> 
      <p:confirm header="Confirmation" message="Are you sure?" icon="fa fa-warning" /> 
     </p:menuitem> 
    </p:contextMenu> 

    <p:confirmDialog global="true" showEffect="fade" hideEffect="fade"> 
     <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="fa fa-check" /> 
     <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="fa fa-remove" /> 
    </p:confirmDialog> 
</h:form> 

प्रबंधित सेम:

@Named 
@RequestScoped 
public class Systemusers implements Serializable 
{ 
....... 
public void editRecord(boolean editable) 
    { 
     SessionFactory factory = HibernateUtils.getSessionFactory(); 
     Session session = factory.getCurrentSession(); 

     try 
     { 
      session.getTransaction().begin(); 

      SystemUsersModel obj = new SystemUsersModel(); 
      obj.setId(selectedSystemUser.getId()); 
      .......... 
      session.update(obj); 

      session.getTransaction().commit(); 

      this.editable = editable; 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
      session.getTransaction().rollback(); 
     } 
    } 
...... 
private boolean editable = false; 

    public boolean isEditable() 
    { 
     return editable; 
    } 

    public void setEditable(boolean editable) 
    { 
     this.editable = editable; 
    } 
} 

जब मैं प्रपत्र संपादित करें खोलने के लिए और मैं बटन Edit System User क्लिक प्रपत्र गायब हो जाता है मैं इस कोड का परीक्षण किया। शायद क्योंकि मैं इसे प्रस्तुत और निष्पादित करता हूं। मैं फॉर्म को बंद किए बिना इसे कैसे निष्पादित कर सकता हूं?

+0

मैंने यह कोशिश की लेकिन मुझे एक ही परिणाम मिलता है। क्या आप कुछ कोड उदाहरण पेस्ट कर सकते हैं? –

+0

मैंने आपके प्रस्ताव की कोशिश की लेकिन फिर संवाद छिपा हुआ है। मैंने संवाद में फॉर्म जोड़ा और मैं अब समस्या को हल करने में कामयाब रहा। वर्तमान में मुझे इस समस्या का सामना करना पड़ रहा है: जावा ऑब्जेक्ट वैल्यू = "# {systemusers.selectedSystemUser.id}" खाली है तो मैं संपादन बटन दबाता हूं। कुछ अनुमान है इसे कैसे ठीक किया जा सकता है? –

+0

यहां एक त्वरित नोट यह है कि आपके पास एक समर्पित एच है: संवाद के लिए फॉर्म और तालिका के लिए एक, ** सामग्री की ** ** को लपेटने की कोशिश करें: एक नए एच के साथ संवाद: फ़ॉर्म और अपने डेटा को पुराने के साथ सक्षम करें एच: फॉर्म, यह आपको किसी भी गलत निष्पादन या प्रसंस्करण समस्याओं को ठीक करने के लिए नेतृत्व कर सकता है। –

उत्तर

1

उदाहरण कोड कई तरीकों से खराब है। दो बातें बाहर खड़े:

  • ऐसा नहीं है एक [mcve]
  • <f:ajax render=":form" execute=":form"> ज़रूरत से ज़्यादा है या यहां तक ​​कि अजीब व्यवहार के कारण हो सकता

ओपी सबसे अधिक संभावना PrimeFaces showcase से कि (उद्धरण पता नहीं है, जोर मेरा)

CommandButton

कमांडबटन मानक एच: कमांड बटन AJAX, आंशिक प्रसंस्करण और स्किनिंग सुविधाओं के साथ विस्तारित करता है।

तो commandBotton पहले से ही ajax anabled है और की जरूरत नहीं एक

<f:ajax render=":form" execute=":form"> 

इसके अंदर hava के लिए करता है। यह (सबसे अधिक संभावना) अद्यतन को दो बार चलाता है। एक @none (Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes) और एक फॉर्म को अपडेट कर रहा है। दूसरी संभावना में कोई सामग्री नहीं है। लेकिन कोशिश (और डिबगिंग) चीजों को स्पष्ट कर देगा। यदि यह उत्तर नहीं है, तो कोड में कारण नहीं देखा जा सकता है और इसलिए यह एक [mcve]

संबंधित मुद्दे