दिलचस्प पोस्ट
पृष्ठ के निचले भाग में पाद लेख (div) कैसे संरेखित करें? नेस्टेड सबफॉर्म्स पर व्यूस्क्रिप्ट डेकोरेटर का प्रयोग (ज़ेंड फॉर्म) देखने के लिए जांचें कि क्या स्ट्रिंग सीरियल की गई है? कौन सा पहला पूर्णांक है जो एक आईईईई 754 फ्लोट वास्तव में प्रतिनिधित्व करने में असमर्थ है? संसाधनों से बिटमैप इमेज असाइन करें। छवि। स्रोत पर? रूबी: डिस्ट्रक्टर्स? कुछ तत्वों के लिए असंगत अक्षम करें पायथन में mkdir -p कार्यक्षमता जेनकींस में किसी अन्य नौकरी से विशिष्ट बिल्ड संख्या को कैसे बढ़ावा देना है? जावास्क्रिप्ट एनीमेशन इतिहास के साथ एसवीएन रिपॉजिटरी को नए जीआईटी भंडार में कैसे स्थानांतरित करना है? क्या जावास्क्रिप्ट async कॉलबैक में फेंक अपवाद को पकड़ना संभव है? संपूर्ण स्ट्रिंग पूल कैसे मुद्रित करें? एसक्यूएल सर्वर में datetime सम्मिलित करने के लिए SQL क्वेरी जावा 7 स्ट्रिंग – ऑर्पटिंग जटिलता

पी का उपयोग कैसे करें: पीढ़ी के भीतर स्ट्रीमिंग कंटेंट के साथ ग्राफिक इमेज: डेटाटेबल?

मैं प्राइमफैस डेटा तालिका के साथ डाटाबेस से छवियों को गतिशील रूप से लोड करना चाहता हूं। कोड इस तरह दिखता है जो इस पीएफ फोरम विषय पर आधारित है:

<p:dataTable id="tablaInventario" var="inv" value="#{registrarPedidoController.inventarioList}" paginator="true" rows="10" selection="#{registrarPedidoController.inventarioSelected}" selectionMode="single" update="tablaInventario tablaDetalle total totalDesc" dblClickSelect="false" paginatorPosition="bottom"> <p:column sortBy="producto.codigo" filterBy="producto.codigo"> <f:facet name="header">#{msg.codigo}</f:facet> #{inv.producto.codProducto} </p:column> <p:column> <f:facet name="header">Foto</f:facet> <p:graphicImage id="photo" value="#{registrarPedidoController.streamedImageById}" cache="FALSE"> <f:param name="inv" value="#{inv.id}" /> </p:graphicImage> </p:column> </p:dataTable> 

साथ में

 public StreamedContent getStreamedImageById() { DefaultStreamedContent image = null; String get = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("inv"); System.out.println("[Param]: " + get); // This prints null. Long id = new Long(get); List<Inventario> listInventarios = controladorRegistrarPedido.listInventarios(); for (Inventario i : listInventarios) { if (i.getId().compareTo(id) == 0) { byte[] foto = i.getProducto().getFoto(); image = new DefaultStreamedContent(new ByteArrayInputStream(foto), "image/png"); } } return image; } 

हालांकि मैं इसे काम नहीं कर सकता मेरा परम मेरे समर्थन सेम को "अशक्त" गुजर रहा है यह कैसे हुआ और मैं इसे कैसे हल कर सकता हूं?

मैं नेटबींस 6.9.1, जेएसएफ 2.0 और प्राइमफैसेस 2.2। आरसी 2 का उपयोग कर रहा हूं।

मैं BalusC पहले समाधान का उपयोग करने पर चला गया, यह ठीक काम करता है, लेकिन यूआई में छवियां प्रदान नहीं की जा रही हैं। अपवाद Glassfish फेंक रहा है:

 WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception java.lang.NullPointerException at com.sun.faces.mgbean.BeanManager$ScopeManager$ViewScopeHandler.isInScope(BeanManager.java:552) 

अच्छा लगता है कि मैं बलुस के लिए धन्यवाद काम कर रहा हूं। मुझे RequestScoped, सत्र स्काइप या अनुप्रयोग का उपयोग करना है, getStreamedImageId के प्रबंधन के लिए स्कैन किया गया हालांकि यूआई में हमेशा डिफ़ॉल्ट छवि (रिक्त मामलों के लिए) सेट कर रहा है और अपेक्षित नहीं है कि प्रत्येक पंक्ति से संबंधित छवि नया कोड है:

 public StreamedContent streamedById(Long id) { DefaultStreamedContent image = null; System.out.println("[ID inventario]: " + id); List<Inventario> listInventarios = controladorRegistrarPedido.listInventarios(); for (Inventario i : listInventarios) { if (i.getId().equals(id)) { byte[] foto = i.getProducto().getFoto(); if (foto != null) { System.out.println(" [Foto]: " + foto); image = new DefaultStreamedContent(new ByteArrayInputStream(foto), "image/png"); break; } } } if (image == null) { System.out.println(" [Image null]"); byte[] foto = listInventarios.get(0).getProducto().getFoto(); image = new DefaultStreamedContent(new ByteArrayInputStream(foto), "image/png"); } System.out.println(" [Foto Streamed]: " + image); return image; } 

Solutions Collecting From Web of "पी का उपयोग कैसे करें: पीढ़ी के भीतर स्ट्रीमिंग कंटेंट के साथ ग्राफिक इमेज: डेटाटेबल?"

<p:graphicImage> प्राप्तकर्ता पद्धति को दो बार कहेंगे। पहली बार जब <img> तत्व HTML में प्रस्तुत किया जाता है और इस प्रकार src विशेषता में URL की आवश्यकता होती है। यदि आप सिर्फ new DefaultStreamedContent() वापस आते हैं, तो यह src विशेषता में सही यूआरएल को स्व-प्रेरित करेगा। दूसरी बार जब ब्राउज़र वास्तव में छवि का अनुरोध करता है, तो वह क्षण है जब आपको वास्तविक छवि वापस करनी चाहिए।

इसलिए, ग्रहक विधि को मूल रूप से इस तरह दिखना चाहिए:

 public StreamedContent getStreamedImageById() { FacesContext context = FacesContext.getCurrentInstance(); if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { // So, we're rendering the view. Return a stub StreamedContent so that it will generate right URL. return new DefaultStreamedContent(); } else { // So, browser is requesting the image. Get ID value from actual request param. String id = context.getExternalContext().getRequestParameterMap().get("id"); Image image = service.find(Long.valueOf(id)); return new DefaultStreamedContent(new ByteArrayInputStream(image.getBytes())); } } 

छवियों को बाइट [] के रूप में डेटाबेस में सहेजा जाता है यदि हम उन्हें सीतनिद्रा में होना के माध्यम से बचाते हैं मैंने <p:fileUpload … टैग के साथ छवियों को अपलोड किया है तो मैं हाइबरनेट का उपयोग करते हुए अन्य डेटा मानों के साथ छवि को सहेजता हूं।

दूसरे पृष्ठ पर, मैं संपूर्ण टेबल डेटा प्रदर्शित कर रहा हूं (निश्चित रूप से छवियों के साथ)

 <p:dataTable var="data" value="#{three.all}" .... 

और गतिशील छवियों का उपयोग कर

 <p:graphicImage alt="image" value="#{three.getImage(data)}" cache="false" > <f:param id="image_id" name="image_id" value="#{data.number}" /> </p:graphicImage></p:dataTable> 

यहाँ "तीन" बैकिंग बीन का नाम है विधि getAll() , मैं तालिका से हाइबरनेट के माध्यम से डेटा पुनर्प्राप्त कर रहा हूँ और उसी विधि में, मैंने एक HashMap<Integer, byte[]> हैशमैप बीन का एक उदाहरण चर और बीन सत्र है। मैं images डाल रहा हूं (जो byte[] फॉर्म में हैं) एक पूर्णांक image_id के साथ

कोड:

  for (int i=0; i<utlst.size(); i++ ){ images.put(utlst.get(i).getNumber(), utlst.get(i).getImage());} //utlst is the object retrieved from database. number is user-id. 

दृश्य में getImage.xhtml, <p:graphicImage alt="image" value="#{three.getImage(data)}" cache="false" > यह विधि getImage(data /*I am passing current object of the list which is being iterated by कॉल करता है getImage(data /*I am passing current object of the list which is being iterated by */ ) getImage(data /*I am passing current object of the list which is being iterated by */ )

getImage का कोड:

 public StreamedContent getImage(Util ut) throws IOException { //Util is the pojo String image_id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("image_id"); System.out.println("image_id: " + image_id); if (image_id == null) { defaultImage=new DefaultStreamedContent(FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/Capture.PNG"), "image/png"); return defaultImage; } image= new DefaultStreamedContent(new ByteArrayInputStream(images.get(Integer.valueOf(image_id))), "image/png"); return image; } 

बस सत्र में एक हैशमैप में आईडी के साथ अपने गतिशील छवियों को रखें तो वे सही ढंग से स्ट्रीम किए जाएंगे।

धन्यवाद और संबंध, ज़ीशान

प्राइफ़फैस 3.2 में बग अभी भी मौजूद है। मैं साथ वैकल्पिक हल करता हूँ

 <p:graphicImage value="#{company.charting}"> <f:param id="a" name="a" value="#{cc.attrs.a}" /> <f:param id="b" name="b" value="#{cc.attrs.b}" /> </p:graphicImage> 

तथा

 ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); String a= externalContext.getRequestParameterMap().get("a"); String b= externalContext.getRequestParameterMap().get("b"); 

लेकिन इसके साथ ही बीन को 2 बार कहा जाता है लेकिन दूसरी कॉल वैरिएबल में ए + बी भरी हुई है 😉

खराब बग