بتاريخ: 29 يناير 20188 سنة comment_293391 السلام عليكم ورحمة الله وبركاته عندي مشكلة بعد طباعة التقرير باإستخدام 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(); } } تقديم بلاغ
بتاريخ: 30 يناير 20188 سنة comment_293418 طبيعى لازم يظهر ف ال 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 تقديم بلاغ
بتاريخ: 31 يناير 20188 سنة كاتب الموضوع comment_293440 طبيعى لازم يظهر ف ال 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 يناير 20188 سنة بواسطة m_rashad2 تقديم بلاغ
بتاريخ: 31 يناير 20188 سنة كاتب الموضوع comment_293441 استخدم post بدلاً من get انا مستخدم post يا مهندس مصطفي تقديم بلاغ
بتاريخ: 31 يناير 20188 سنة comment_293443 طبيعى لازم يظهر ف ال 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 تقديم بلاغ
بتاريخ: 31 يناير 20188 سنة comment_293444 استخدم post بدلاً من get انا مستخدم post يا مهندس مصطفي إذن لا يمكن أن تظهر في url تقديم بلاغ
بتاريخ: 1 فبراير 20188 سنة كاتب الموضوع comment_293458 استخدم post بدلاً من get انا مستخدم post يا مهندس مصطفي إذن لا يمكن أن تظهر في url بس لو حضرتك خدت بالك فى الكود انا بستخدم post ومع ذلك بتظهر بالكامل عموما انا هجرب موضوع ال session واشوف تم تعديل 1 فبراير 20188 سنة بواسطة m_rashad2 تقديم بلاغ
بتاريخ: 13 فبراير 20188 سنة كاتب الموضوع comment_293675 طريقة ال Session تعمل بشكل ممتاز شاكر ليكم جدا للتفاعل السريع يا مهندسين تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.