Sir,
I am trying to run a report with a button on a jsff page
My button code is
<af:button text="button 1" id="b1" destination="/printreportservlet?employeeId#{bindings.EmployeeId.inputValue}"/>
My servlet code is
package view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.InputStream;
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 model.AppModuleImpl;
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.xml.JRXmlLoader;
import oracle.jbo.client.Configuration;
@WebServlet(name = "PrintReportServlet", urlPatterns = { "/printreportservlet" })
public class PrintReport1Servlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
/**
* @return
*/
protected Connection getConnection() {
// System.out.println("getConnection--");
PreparedStatement st = null;
String amDef = "sa.gov.rgr.model.module.AppModuleAM";
String config = "AppModuleAMLocal";
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;
}
/**
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>PrintReportServlet</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();
String var0 = "";
try {
var0 = request.getParameter("employeeId");
} catch (Exception e) {
e.printStackTrace();
}
response.setContentType(CONTENT_TYPE);
Map parameters = new HashMap();
parameters.put("format", "pdf");
parameters.put("WEBDIR", getServletContext().getRealPath("/"));
parameters.put("REPORT_LOCALE", new Locale("ar"));
parameters.put("employeeId", new Long(var0));
Connection conn = null;
InputStream is = null;
try
{
conn = getConnection();
is = getServletContext().getResourceAsStream("/WEB-INF/reports/Report.jrxml");
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=report.pdf");
JasperDesign jasperDesign = JRXmlLoader.load(is);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
conn.close();
}
catch (Exception e) {
e.printStackTrace();
} finally {
closeConnection(conn);
try {
if(is !=null){
is.close();
}
} catch (Exception localException1)
{
}
}
}
/**
* @param conn
*/
protected static void closeConnection(Connection conn) {
try {
if(conn !=null){
conn.close();
}
} catch (Exception ex) {
// System.out.println("Developer Msg : Exception in printReport1Servlet.closeConnection()");
}
}
}
My report code is
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Report" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1100e657-82b6-466e-b6eb-58efd82952cb">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="employeeId" class="java.lang.String">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[select * from employees
WHERE EMPLOYEE_ID=to_number($P{employeeId})]]>
</queryString>
<field name="EMPLOYEE_ID" class="java.lang.Long"/>
<field name="FIRST_NAME" class="java.lang.String"/>
<field name="LAST_NAME" class="java.lang.String"/>
<field name="EMAIL" class="java.lang.String"/>
<field name="PHONE_NUMBER" class="java.lang.String"/>
<field name="HIRE_DATE" class="java.sql.Timestamp"/>
<field name="JOB_ID" class="java.lang.String"/>
<field name="SALARY" class="java.math.BigDecimal"/>
<field name="COMMISSION_PCT" class="java.math.BigDecimal"/>
<field name="MANAGER_ID" class="java.math.BigDecimal"/>
<field name="DEPARTMENT_ID" class="java.math.BigDecimal"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch">
<staticText>
<reportElement x="229" y="2" width="100" height="20" uuid="225ce4a1-d66e-4b64-bcb8-f35994d570ec"/>
<text><![CDATA[EMPLOYEE_ID]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<textField>
<reportElement x="229" y="55" width="100" height="20" uuid="a8cd9d36-884a-4edf-8052-314b484e00c4"/>
<textFieldExpression><![CDATA[$F{EMPLOYEE_ID}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
And my jsff page code is
<?xml version='1.0' encoding='UTF-8'?>
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:f="http://java.sun.com/jsf/core">
<af:button text="button 1" id="b1" destination="/printreportservlet?employeeId#{bindings.EmployeeId.inputValue}"/>
<af:table value="#{bindings.EmployeesView1.collectionModel}" var="row" rows="#{bindings.EmployeesView1.rangeSize}"
emptyText="#{bindings.EmployeesView1.viewable ? 'No data to display.' : 'Access Denied.'}"
rowBandingInterval="0" selectedRowKeys="#{bindings.EmployeesView1.collectionModel.selectedRow}"
selectionListener="#{bindings.EmployeesView1.collectionModel.makeCurrent}" rowSelection="single"
fetchSize="#{bindings.EmployeesView1.rangeSize}" id="t1">
<af:column headerText="#{bindings.EmployeesView1.hints.EmployeeId.label}" id="c1">
<af:outputText value="#{row.EmployeeId}" shortDesc="#{bindings.EmployeesView1.hints.EmployeeId.tooltip}" id="ot1">
<af:convertNumber groupingUsed="false" pattern="#{bindings.EmployeesView1.hints.EmployeeId.format}"/>
</af:outputText>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.FirstName.label}" id="c2">
<af:outputText value="#{row.FirstName}" shortDesc="#{bindings.EmployeesView1.hints.FirstName.tooltip}" id="ot2"/>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.LastName.label}" id="c3">
<af:outputText value="#{row.LastName}" shortDesc="#{bindings.EmployeesView1.hints.LastName.tooltip}" id="ot3"/>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.Email.label}" id="c4">
<af:outputText value="#{row.Email}" shortDesc="#{bindings.EmployeesView1.hints.Email.tooltip}" id="ot4"/>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.PhoneNumber.label}" id="c5">
<af:outputText value="#{row.PhoneNumber}" shortDesc="#{bindings.EmployeesView1.hints.PhoneNumber.tooltip}"
id="ot5"/>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.HireDate.label}" id="c6">
<af:outputText value="#{row.HireDate}" shortDesc="#{bindings.EmployeesView1.hints.HireDate.tooltip}" id="ot6">
<af:convertDateTime pattern="#{bindings.EmployeesView1.hints.HireDate.format}"/>
</af:outputText>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.JobId.label}" id="c7">
<af:outputText value="#{row.JobId}" shortDesc="#{bindings.EmployeesView1.hints.JobId.tooltip}" id="ot7"/>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.Salary.label}" id="c8">
<af:outputText value="#{row.Salary}" shortDesc="#{bindings.EmployeesView1.hints.Salary.tooltip}" id="ot8">
<af:convertNumber groupingUsed="false" pattern="#{bindings.EmployeesView1.hints.Salary.format}"/>
</af:outputText>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.CommissionPct.label}" id="c9">
<af:outputText value="#{row.CommissionPct}" shortDesc="#{bindings.EmployeesView1.hints.CommissionPct.tooltip}"
id="ot9">
<af:convertNumber groupingUsed="false" pattern="#{bindings.EmployeesView1.hints.CommissionPct.format}"/>
</af:outputText>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.ManagerId.label}" id="c10">
<af:outputText value="#{row.ManagerId}" shortDesc="#{bindings.EmployeesView1.hints.ManagerId.tooltip}" id="ot10">
<af:convertNumber groupingUsed="false" pattern="#{bindings.EmployeesView1.hints.ManagerId.format}"/>
</af:outputText>
</af:column>
<af:column headerText="#{bindings.EmployeesView1.hints.DepartmentId.label}" id="c11">
<af:outputText value="#{row.DepartmentId}" shortDesc="#{bindings.EmployeesView1.hints.DepartmentId.tooltip}"
id="ot11">
<af:convertNumber groupingUsed="false" pattern="#{bindings.EmployeesView1.hints.DepartmentId.format}"/>
</af:outputText>
</af:column>
</af:table>
</ui:composition>
The complete error code is
java.lang.NumberFormatException: null
at java.lang.Long.parseLong(Long.java:404)
at java.lang.Long.<init>(Long.java:702)
at view.PrintReport1Servlet.doGet(PrintReport1Servlet.java:113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
Truncated. see log file for complete stacktrace
>
<Mar 27, 2015 10:03:46 AM PKT> <Notice> <Diagnostics> <BEA-320068> <Watch "UncheckedException" in module "Module-FMWDFW" with severity "Notice" on server "DefaultServer" has triggered at Mar 27, 2015 10:03:46 AM PKT. Notification details:
WatchRuleType: Log
WatchRule: (SEVERITY = 'Error') AND ((MSGID = 'WL-101020') OR (MSGID = 'WL-101017') OR (MSGID = 'WL-000802') OR (MSGID = 'BEA-101020') OR (MSGID = 'BEA-101017') OR (MSGID = 'BEA-000802'))
WatchData: DATE = Mar 27, 2015 10:03:46 AM PKT SERVER = DefaultServer MESSAGE = [ServletContext@1295794488[app:JasperServletTester module:JasperServletTester-ViewController-context-root path:null spec-version:3.0]] Servlet failed with an Exception
java.lang.NumberFormatException: null
at java.lang.Long.parseLong(Long.java:404)
at java.lang.Long.<init>(Long.java:702)
at view.PrintReport1Servlet.doGet(PrintReport1Servlet.java:113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:137)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:120)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:217)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:81)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:220)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3436)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
SUBSYSTEM = HTTP USERID = <WLS Kernel> SEVERITY = Error THREAD = [ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)' MSGID = BEA-101020 MACHINE = TANVIR-PC TXID = CONTEXTID = fd43f1ae-c573-4366-9924-18a1ab1a228f-0000008d TIMESTAMP = 1427432626062
WatchAlarmType: AutomaticReset
WatchAlarmResetPeriod: 30000
>
<oracle.dfw.impl.incident.DiagnosticsDataExtractorImpl> <DiagnosticsDataExtractorImpl> <createADRIncident> <incident 16 created with problem key "DFW-99998 [java.lang.NumberFormatException][oracle.security.jps.ee.http.JpsAbsFilter$1.run][JasperServletTester]">
<oracle.adf.common> <AdfDiagnosticsJarsVersionDumpImpl> <executeDump> <Path of the jars version dump :C:\Users\TANVIR\AppData\Roaming\JDeveloper\system12.1.3.0.41.140521.1008\DefaultDomain\servers\DefaultServer\adr\diag\ofm\defaultdomain\defaultserver\incident\incdir_16/adf_DiagnosticsJarsVersionDump24_i16.txt>
For any help I shall be very grateful
Regards