m_rashad2 بتاريخ: 29 يناير 2018 تقديم بلاغ مشاركة بتاريخ: 29 يناير 2018 السلام عليكم ورحمة الله وبركاته عندي مشكلة بعد طباعة التقرير باإستخدام Servlet يظهر عنوان التقرير بكامل ال parameters الخاصة بالتقرير وأريد إخفائها أو تشفير العنوان وقبل انا استخدم ال servlet كنت أستخدم الطباعة عن طريق ال bean ولكن عند الطباعة على صفحة jsff لا يقوم بالطباعة وأستخدمة بعد ذلك ال servlet وأيضا لكي يظهر التقرير فى صفحة منفصلة ويعمل بشكل طبيعيى ولكن اريد تشقير ال url لانه يظهر بالكامل هل هناك حل ؟؟ كود ال servlet package hrss.view; import hrss.model.app.AppModuleImpl; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import java.util.Locale; import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.jasperreports.engine.JRAbstractExporter; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporter; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JRParameter; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.engine.util.SimpleFileResolver; import net.sf.jasperreports.engine.xml.JRXmlLoader; import oracle.jbo.client.Configuration; @WebServlet(name = "DefineLtrRepServlet", urlPatterns = { "/defineltrrepservlet" }) public class DefineLtrRepServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=UTF-8"; public void init(ServletConfig config) throws ServletException { super.init(config); } protected Connection getConnection() { PreparedStatement st = null; String amDef = "hrss.model.app.AppModule"; String config = "AppModuleLocal"; AppModuleImpl am = (AppModuleImpl) Configuration.createRootApplicationModule(amDef, config); st = am.getDBTransaction().createPreparedStatement("select 1 from dual", 0); Connection conn = null; try { conn = st.getConnection(); return conn; } catch (SQLException e) { } return null; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //String var0 = ""; String pSctrId = ""; String pMgrType = ""; String pMgrName = ""; String pLetterType = ""; String pLetterTo = ""; try { pSctrId = request.getParameter("pSctrId"); pMgrType = request.getParameter("pMgrType"); pMgrName = request.getParameter("pMgrName"); pLetterType = request.getParameter("pLetterType"); pLetterTo = request.getParameter("pLetterTo"); } catch (Exception e) { e.printStackTrace(); } response.setContentType(CONTENT_TYPE); Map parameters = new HashMap(); parameters.put("format", "pdf"); String reportsDirPath = this.getServletContext().getRealPath("/Reports/"); parameters.put("WEBDIR", reportsDirPath); System.out.println("reportsDirPath Desc :" + reportsDirPath.toString()); File reportsDir = new File(reportsDirPath); System.out.println("File Desc : file here"); parameters.put(JRParameter.REPORT_FILE_RESOLVER, new SimpleFileResolver(reportsDir)); parameters.put("REPORT_LOCALE", new Locale("ar")); parameters.put("pSctrId", Integer.valueOf(pSctrId)); parameters.put("pMgrType", Integer.valueOf(pMgrType)); parameters.put("pMgrName", new String(pMgrName)); parameters.put("pLetterType", Integer.valueOf(pLetterType)); parameters.put("pLetterTo", new String(pLetterTo)); Connection conn = null; InputStream is = null; OutputStream out = null; try { conn = getConnection(); is = getServletContext().getResourceAsStream("/Reports/" + "HrDefineLtr.jrxml"); response.setContentType("application/pdf"); // If we want it to view in pdf viewer //response.addHeader("Content-Disposition", "attachment; filename=HrDefineLtr.pdf"); response.setHeader("Cache-Control", "max-age=0"); JasperDesign jasperDesign = null; try { jasperDesign = JRXmlLoader.load(is); } catch (JRException e) { // TODO: Add catch code System.out.println("error 2 : " + e.getMessage()); } JasperReport jasperReport = null; try { jasperReport = JasperCompileManager.compileReport(jasperDesign); // jasperReport = (JasperReport)JRLoader.loadObject(is); // // report.setWhenNoDataType(WhenNoDataTypeEnum.NO_DATA_SECTION); } catch (JRException e) { // TODO: Add catch code System.out.println("error 3 : " + e.getMessage()); } JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); //ByteArrayOutputStream baos = new ByteArrayOutputStream(); //ServletOutputStream out = response.getOutputStream(); out = response.getOutputStream(); // If we want it to view in pdf viewer //JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream()); //JasperExportManager.exportReportToPdfStream(jasperPrint, baos); JRExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out); exporter.exportReport(); //out.write(baos.toByteArray()); // out.flush(); //out.close(); //conn.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (out != null) { try { closeConnection(conn); out.flush(); out.close(); if (is != null) { is.close(); } } catch (Exception ex) { System.out.println(ex.getMessage()); } } } // If we want it to view in pdf viewer /* PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>ReportServlet</title></head>"); out.println("<body>"); out.println("<p>The servlet has received a GET. This is the reply.</p>"); out.println("</body></html>"); out.close(); */ } protected static void closeConnection(Connection conn) { try { if (conn != null) { conn.close(); } } catch (Exception ex) { System.out.println("Developer Msg : Exception in printReport1Servlet.closeConnection()"); } } } كود ال XML <af:button text="Define Letter" id="b2" targetFrame="_blank" partialSubmit="true" partialTriggers="soc2 soc3 ItLetterAppName ItLetterTo" binding="#{backingBeanScope.EmpServices.b3}" disabled="#{bindings.DefineTypeName.inputValue == null || bindings.DefineAppName.inputValue == null ? true : false}" /> كود ال Bean public void Ltrtoggle(ValueChangeEvent vce) { if (vce.getNewValue()!= null){ pLetterTo = vce.getNewValue().toString(); b3.setDestination(getDestination() + "&pLetterTo=" + pLetterTo +""); } } public String getDestination() { getRepParam(); try { url = "/defineltrrepservlet?pSctrId=" + pSctrId + "&pMgrType=" + pMgrType + "&pMgrName=" + pMgrName + "&pLetterType=" + pLetterType + ""; } catch (Exception e) { // TODO: Add catch code url = null; e.printStackTrace(); } return url; } public void getRepParam() { try { BindingContext lBindingContext = BindingContext.getCurrent(); BindingContainer bindings = lBindingContext.getCurrentBindingsEntry(); AttributeBinding attrLetterTypeId = (AttributeBinding) bindings.getControlBinding("DefineTypeId1"); AttributeBinding attrMgrTypeId = (AttributeBinding) bindings.getControlBinding("DefineAppId1"); AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance(); Map pageFlowScope = adfFacesContext.getPageFlowScope(); pSctrId = (Integer) pageFlowScope.get("SctrId"); if (attrLetterTypeId.getInputValue() != null) { pLetterType = (Integer) attrLetterTypeId.getInputValue(); } if (itLtrTo.getValue() != null){ //if (itLtrTo.getValue() != null) { //pLetterTo = itLtrTo.getValue().toString(); pLetterTo = itLtrTo.getValue().toString(); } if (attrMgrTypeId.getInputValue() != null) { pMgrType = (Integer) attrMgrTypeId.getInputValue(); } if (itLtrAppName.getValue() != null) { pMgrName = itLtrAppName.getValue().toString(); } /* System.out.println("pSctrId Desc :" + String.valueOf(pSctrId)); System.out.println("pLetterType Desc :" + String.valueOf(pLetterType)); System.out.println("pLetterTo Desc :" + String.valueOf(pLetterTo)); System.out.println("pMgrType Desc :" + String.valueOf(pMgrType)); System.out.println("pMgrName Desc :" + String.valueOf(pMgrName)); */ } catch (Exception e) { // TODO: Add catch code e.printStackTrace(); } } اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ahmedabdelrasoul7 بتاريخ: 30 يناير 2018 تقديم بلاغ مشاركة بتاريخ: 30 يناير 2018 طبيعى لازم يظهر ف ال url لانك بتبعت القيم ف ال request وبتستقبل ال parameters دى وتشتغل عليهاالافضل انك تبعتها من خلال Map مثال pSctrId = request.getParameter("pSctrId"); pMgrType = request.getParameter("pMgrType"); pMgrName = request.getParameter("pMgrName"); pLetterType = request.getParameter("pLetterType"); pLetterTo = request.getParameter("pLetterTo"); بدلها ب Map param = (Map) request.getSession().getAttribute("MapParam"); ال param تبعتها ع طول ف السطر ده JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn); طيب انا عاوز املا المتغيرات بتاعتى قبل ما انادى ع سيرفرت ده بتاع التقرير fill variables and values and set it in Map in Bean Map map = new LinkedHashMap(); map.put("bellNo", bellNo1.bigDecimalValue()); map.put("bellNo2", bellNo2.bigDecimalValue()); map.put("bellNo2", bellNo3.bigDecimalValue()); public void runMyJasperReport(String repprtPath, Map params) { try { FacesContext context = FacesContext.getCurrentInstance(); String url = "/MyJasperservlet"; ADFJSFUtils.storeOnSession("MapParam", param); String contextPath = context.getExternalContext().getRequestContextPath(); System.out.println("contextPath " + contextPath); ExtendedRenderKitService erks = (ExtendedRenderKitService) Service.getRenderKitService(context, ExtendedRenderKitService.class); StringBuilder script = new StringBuilder(); script.append("window.open(\"" + contextPath + url + "\");"); erks.addScript(FacesContext.getCurrentInstance(), script.toString()); } catch (Exception e) { e.printStackTrace(); } } فانت كده بتنفذ الموجود فالسيرفلت بدون ما ترسل parameters شغال sesscionScope variables 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 30 يناير 2018 تقديم بلاغ مشاركة بتاريخ: 30 يناير 2018 استخدم post بدلاً من get اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_rashad2 بتاريخ: 31 يناير 2018 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 يناير 2018 (معدل) طبيعى لازم يظهر ف ال url لانك بتبعت القيم ف ال request وبتستقبل ال parameters دى وتشتغل عليها الافضل انك تبعتها من خلال Map مثال pSctrId = request.getParameter("pSctrId"); pMgrType = request.getParameter("pMgrType"); pMgrName = request.getParameter("pMgrName"); pLetterType = request.getParameter("pLetterType"); pLetterTo = request.getParameter("pLetterTo"); بدلها ب Map param = (Map) request.getSession().getAttribute("MapParam"); ال param تبعتها ع طول ف السطر ده JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn); طيب انا عاوز املا المتغيرات بتاعتى قبل ما انادى ع سيرفرت ده بتاع التقرير fill variables and values and set it in Map in Bean Map map = new LinkedHashMap(); map.put("bellNo", bellNo1.bigDecimalValue()); map.put("bellNo2", bellNo2.bigDecimalValue()); map.put("bellNo2", bellNo3.bigDecimalValue()); public void runMyJasperReport(String repprtPath, Map params) { try { FacesContext context = FacesContext.getCurrentInstance(); String url = "/MyJasperservlet"; ADFJSFUtils.storeOnSession("MapParam", param); String contextPath = context.getExternalContext().getRequestContextPath(); System.out.println("contextPath " + contextPath); ExtendedRenderKitService erks = (ExtendedRenderKitService) Service.getRenderKitService(context, ExtendedRenderKitService.class); StringBuilder script = new StringBuilder(); script.append("window.open(\"" + contextPath + url + "\");"); erks.addScript(FacesContext.getCurrentInstance(), script.toString()); } catch (Exception e) { e.printStackTrace(); } } فانت كده بتنفذ الموجود فالسيرفلت بدون ما ترسل parameters شغال sesscionScope variables الكلام دا كويس جدا يا مهندس أحمد بس فيه import مش موجود خاص بال ADFJSFUtils انا ممكن ابعتها فى ال session كدا ولا لازم استخدم ال class دا cont.getExternalContext().getSessionMap().put("Mymap", Map); بس حابب أجرب الطريقة دي بالكامل حابب اعرف ال class دا لو تكرمت علشان اجرب والطريقة دي هتطلع التقرير فى tap تاني ولا popup ؟ وسؤال كمان والأفضل استخد كدا button ولا commandbutton ؟ تم تعديل 31 يناير 2018 بواسطة m_rashad2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_rashad2 بتاريخ: 31 يناير 2018 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 يناير 2018 استخدم post بدلاً من get انا مستخدم post يا مهندس مصطفي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 31 يناير 2018 تقديم بلاغ مشاركة بتاريخ: 31 يناير 2018 طبيعى لازم يظهر ف ال url لانك بتبعت القيم ف ال request وبتستقبل ال parameters دى وتشتغل عليها الافضل انك تبعتها من خلال Map مثال pSctrId = request.getParameter("pSctrId"); pMgrType = request.getParameter("pMgrType"); pMgrName = request.getParameter("pMgrName"); pLetterType = request.getParameter("pLetterType"); pLetterTo = request.getParameter("pLetterTo"); بدلها ب Map param = (Map) request.getSession().getAttribute("MapParam"); ال param تبعتها ع طول ف السطر ده JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn); طيب انا عاوز املا المتغيرات بتاعتى قبل ما انادى ع سيرفرت ده بتاع التقرير fill variables and values and set it in Map in Bean Map map = new LinkedHashMap(); map.put("bellNo", bellNo1.bigDecimalValue()); map.put("bellNo2", bellNo2.bigDecimalValue()); map.put("bellNo2", bellNo3.bigDecimalValue()); public void runMyJasperReport(String repprtPath, Map params) { try { FacesContext context = FacesContext.getCurrentInstance(); String url = "/MyJasperservlet"; ADFJSFUtils.storeOnSession("MapParam", param); String contextPath = context.getExternalContext().getRequestContextPath(); System.out.println("contextPath " + contextPath); ExtendedRenderKitService erks = (ExtendedRenderKitService) Service.getRenderKitService(context, ExtendedRenderKitService.class); StringBuilder script = new StringBuilder(); script.append("window.open(\"" + contextPath + url + "\");"); erks.addScript(FacesContext.getCurrentInstance(), script.toString()); } catch (Exception e) { e.printStackTrace(); } } فانت كده بتنفذ الموجود فالسيرفلت بدون ما ترسل parameters شغال sesscionScope variables الكلام دا كويس جدا يا مهندس أحمد بس فيه import مش موجود خاص بال ADFJSFUtils انا ممكن ابعتها فى ال session كدا ولا لازم استخدم ال class دا cont.getExternalContext().getSessionMap().put("Mymap", Map); بس حابب أجرب الطريقة دي بالكامل حابب اعرف ال class دا لو تكرمت علشان اجرب والطريقة دي هتطلع التقرير فى tap تاني ولا popup ؟ وسؤال كمان والأفضل استخد كدا button ولا commandbutton ؟ تستطيع الإرسال في session اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 31 يناير 2018 تقديم بلاغ مشاركة بتاريخ: 31 يناير 2018 استخدم post بدلاً من get انا مستخدم post يا مهندس مصطفي إذن لا يمكن أن تظهر في url اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_rashad2 بتاريخ: 1 فبراير 2018 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 1 فبراير 2018 (معدل) استخدم post بدلاً من get انا مستخدم post يا مهندس مصطفي إذن لا يمكن أن تظهر في url بس لو حضرتك خدت بالك فى الكود انا بستخدم post ومع ذلك بتظهر بالكامل عموما انا هجرب موضوع ال session واشوف تم تعديل 1 فبراير 2018 بواسطة m_rashad2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 1 فبراير 2018 تقديم بلاغ مشاركة بتاريخ: 1 فبراير 2018 إذن يوجد خطأ عندك في مكان ما اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_rashad2 بتاريخ: 13 فبراير 2018 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 13 فبراير 2018 طريقة ال Session تعمل بشكل ممتاز شاكر ليكم جدا للتفاعل السريع يا مهندسين اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 13 فبراير 2018 تقديم بلاغ مشاركة بتاريخ: 13 فبراير 2018 العفو اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.