2013-04-27 7 views
5

मुझे पता है कि इस सवाल का दोहराया जा सकता है, लेकिन मैं वास्तव में मेरे जारी करने के लिए समाधान नहीं मिल सकता है जब तक काम नहीं कर रहा; मेरी समस्या यह है कि छंटाई और जब तक मैं विवरण दिखाने के लिए किसी भी पंक्ति पर क्लिक करें छानने काम नहीं कर रहा तरह datatable कार्यक्षमता संवाद के बाद मैं संवाद सब कुछ बंद "क्रमित, फ़िल्टर" सामान्य रूप से काम कर रहा है और उम्मीद के रूप में।Primefaces datatable सॉर्टिंग और फ़िल्टरिंग rowSelect

यहाँ मेरी कोड है: Bean.java

@ViewScoped 
public class HomeBean implements Serializable { 

    private List<Ticket> filteredTickets; 
    private List<Ticket> tickets; 
    private Ticket   selectedTicket; 
    private Ticket[]  selectedTickets; 

    public HomeBean() { 
     super(); 
    } 

    @PostConstruct 
    public void init() { 
     getData(); 
    } 

    private void getData() { 
     TicketFacade service; 
     service = TicketFacade.getInstance(); 
     try { 
      tickets = service.selectTickets(); 
     } catch (Exception e) { 
      logger.error(Utilities.printStackTrace(e)); 
     } 
    } 
    // setter & getters 

    @PreDestroy 
    public void finalize() { 
     logger.debug("@PreDestroy"); 
    } 
} 

और यहाँ एक्सएचटीएमएल

<?xml version="1.0" encoding="ISO-8859-1" ?> 
    <!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:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:c="http://java.sun.com/jsp/jstl/core"> 

<f:view contentType="text/html"> 
    <h:head> 
     <f:facet name="first"> 
      <meta content='text/html; charset=UTF-8' http-equiv="Content-Type" /> 
      <title>Home Page</title> 
     </f:facet> 

     <script type="text/javascript"> 
      window.history.forward(); 
      function noBack() { 
       window.history.forward(); 
      } 
     </script> 
    </h:head> 

     <h:body id="body-view" onload="noBack();" 
      onpageshow="if (event.persisted) noBack();" onunload=""> 
      <f:view locale="#{userManager.locale}"> 
       <h:form id="Ticket"> 
        <p:dataTable var="ticket" value="#{homeBean.tickets}" 
         rowKey="#{ticket.id}" paginator="true" rows="15" 
         selection="#{homeBean.selectedTicket}" selectionMode="single" 
         filteredValue="#{homeBean.filteredTickets}" id="ticketsTable" 
         emptyMessage="#{lbl.noTicketsFound}" 
         style="margin-bottom:10px;margin-top:10px;"> 
         <p:ajax event="rowSelect" update=":Ticket:display" 
          oncomplete="ticketDialog.show()" /> 

         <f:facet name="header">#{lbl.listOfTickets}</f:facet> 

         <p:column headerText="#{lbl.tblId}" sortBy="#{ticket.id}" 
          filterBy="#{ticket.id}" id="id"> 
          <h:outputLink value="#{edit.xhtml?id=#{ticket.id}">#{ticket.id}</h:outputLink> 

         </p:column> 

         <p:column headerText="#{lbl.tblTitle}" sortBy="#{ticket.title}" 
          filterBy="#{ticket.title}" id="title"> #{ticket.title} 
            </p:column> 

        </p:dataTable> 

        <p:dialog header="#{lbl.moreTicketDetails}" widgetVar="ticketDialog" 
         resizable="true" width="500" showEffect="explode" 
         hideEffect="explode" closable="true" draggable="true"> 

         <h:panelGrid id="display" columns="2" cellpadding="4" 
          dir="#{lbl.dir}"> 
          <h:outputText for="shortDescription" 
           value="#{lbl.shortDescription}" /> 
          <h:outputText id="shortDescription" 
           value="#{homeBean.selectedTicket.shortDescription}" /> 

          <h:outputText for="callCenterList" value="#{lbl.callcenters}" /> 
          <h:outputText id="callCenterList" 
           value="#{homeBean.selectedCallCenters}"> 
          </h:outputText> 
         </h:panelGrid> 
        </p:dialog> 
       </h:form> 
      </f:view> 
     </h:body> 
     </f:view> 
    </html> 
+0

लिंक या बटन होना चाहिए जो इस पृष्ठ पर उपयोगकर्ता को नेविगेट करता है और इसे 'AJAX = false' सेट करता है। –

+0

@ ÖmerFarukAlmalı क्या आप वाकई मुख्य समस्या को समझ लिया है करने के लिए कर रहे हैं? –

+0

@LuiggiMendoza हां, ऐसा लगता है कि यह इस तरह के दृश्य बग जैसा है [http://stackoverflow.com/a/10665237/1659451) –

उत्तर

1

मैंने कुछ समय पहले अपनी स्क्रीन पर एक समान मुद्दा देखा है। जब पृष्ठ पूरी तरह से प्रस्तुत नहीं किया जाता है, तो सॉर्ट और फ़िल्टरिंग नहीं होती है। परीक्षण उद्देश्यों के लिए, क्या आप जावा स्क्रिप्ट को हटाने का प्रयास कर सकते हैं और कोशिश कर सकते हैं। डिबग करने के लिए एक और तरीका है क्रोम हिट F12 का उपयोग कर और ajax कॉल जानने के लिए नेटवर्क टैब पर देखने के है। उम्मीद है की यह मदद करेगा।

1

मैं एक ही मुद्दा था, मेरे मामले में मैं बस में मेरी "setSelected" चयनित ऑब्जेक्ट की स्थापना नहीं कर रहा था, मैं भी चयनित ऑब्जेक्ट पर कुछ आपरेशन कर रहा था। समस्या है: "setSelected" से पहले किसी भी पंक्ति setSelected (शून्य) के साथ, चयन किया जाता है कहा जाता है। यदि आप इस "शून्य" मान के साथ कोई ऑपरेशन करते हैं तो आपको गंभीर समस्याएं हो सकती हैं। समाधान केवल आवश्यक संचालन करने से पहले शून्य के लिए जांच करने के लिए है।

मुझे नहीं पता कि आपकी समस्या एक जैसी है, लेकिन चूंकि आपने "सेट सेलेक्टेड" के लिए अपना कोड पोस्ट नहीं किया है, यह हो सकता है।

+0

यह सबसे अधिक संभावना थी जब आपके पास एक AJAX ईवेंट भी था जिसमें आपको चयनित आइटम की आवश्यकता थी, है ना? – Kukeltje

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