Jasper 报告输入页面自定义
目标
您想要为 Windchill Business Reporting (WBR) 系统中的 Jasper 报告提供参数输入页面。
背景
Windchill Business Reporting (WBR) 解决方案支持带有参数的报告。Windchill 查看器提供了一个基本输入页面,可供用户在执行报告时收集参数值。通常,此输入页面需要自定义才能获得更好的最终用户体验。如需自定义输入页面,可以使用标准 Windchill Java Server Page (JSP) 功能。
范围/适用性/假设
本文档说明了如何为 Jasper 报告创作自定义 JSP
假定您有权访问 Windchill 服务器 JSP 目录 <WindchillHome>\codebase\wtcore\jsp,能够在其关联的子目录 <MyInputPagePackage> 中创建 JSP 输入页面 <MyInputPage>。
假定您具有一定的访问权限,能够在站点上下文中编辑现有 Windchill 报告对象 <MyReport>。
解决方案
构造并指定报告的自定义输入页面。
过程 - 指定可选参数
自定义点
使用了 Windchill 数据源的 Jasper 报告需要指定每个参数值。但是,如果用户可以选择性地保留未指定的参数值,并且报告忽略了相关的条件或隐式使用了合适的默认设置,则报告会更有用。要实现此行为,可以传递由单个空格 (" ") 构成的参数值,并在输入页面中将单个空格设置为参数的默认值,这样用户就不需要在参数输入字段中输入任何内容。使用此方法时,必须确保基础数据源能够正确处理传递的空格值。
过程 - 指定要省略的参数
默认情况下,仅数据源参数包含在 Windchill 的 Jasper 请求中。不过,可以使用 "parametersToOmit" 请求属性显式排除参数。请注意,这是一个 servlet 请求对象属性列表。假定您想要省略报告数据源的参数列表中名为 "param1" 的参数。以下为指定此参数的示例。
<%
request.setAttribute("parametersToOmit",
Arrays.asList("param1"));
%>
限制
无。
示例代码
<%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%>
<%@page import="java.net.URL"%>
<%@page import="com.ptc.windchill.enterprise.report.ReportHelper"%>
<%!private static void executeReport(final HttpServletRequest request, final
HttpServletResponse response, String reportName) throws Exception {
System.out.println("DemoInputPage.jsp:executeReport() :" + reportName);
if(request.getParameter("username") == null) {
throw new Exception("Authentication Needed");
}
response.sendRedirect("/");
}
%>
<%
String state = request.getParameter("PartReportTemplate_stateParameter");
if(state!=null)
{
try {
executeReport(request, response, "DemoReport");
}catch (Exception e) {
e.printStackTrace();
}
}%>
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Demo input page</title>
</head>
<body>
<form action="#" name="mainform" id="mainform" method="post" >
<br>
<center>
<h1>
Demo Input JSP for Report
</h1>
</center>
<br>
<br>
<br>
<h2> Parameter for PartReportTemplate</h2>
<hr/>
<table frame="box">
<th>Parameter Name</th>
<th>Parameter Value</th>
<tr>
<td>State(upper case e,g APPROVED)</td>
<td><input type="text" name="PartReportTemplate_stateParameter" /></td>
</tr>
</table>
<input type=hidden name="USER" id ="USER" value="<%=state %>">
<button type="submit">Generate Report</button>
</form>
</body>
</html>
Windchill 代码中的使用示例
所有预设报告均使用 Windchill JSP 输入页面。
这对您有帮助吗?