Создание примера страницы в дизайнере

Создадим простую страницу с дизайнером отчетов. Для этого поместим в каталог WebContent\WEB-INF\lib\ следующие библиотеки: stimulsoft.reports.fx-core-2011.1.900.jar, stimulsoft.reports.fx-designer-2011.1.900.jar, stimulsoft.reports.fx-viewer-2011.1.900.jar, stimulsoft.reports.fx-web-2011.1.900.jar. В результате должно получиться как на рисунке снизу:

 

 

 

Далее открываем на редактирование web.xml, где код должен выглядеть приблизительно так:

 

web.xml

...

<?xml version="1.0" encoding="UTF-8" ?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd"

 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee"

 id="WebApp_ID" version="2.5">

 <display-name>sti_webviewer</display-name>

 <welcome-file-list>

         <welcome-file>index.jsp</welcome-file>

 </welcome-file-list>

 <!-- configuration, this parameter indicates the main application directory -->

 <servlet>

         <servlet-name>StimulsoftResource</servlet-name>

         <servlet-class>com.stimulsoft.web.servlet.StiWebResourceServlet</servlet-class>

 </servlet>

 <servlet-mapping>

         <servlet-name>StimulsoftResource</servlet-name>

         <url-pattern>/stimulsoft_web_resource</url-pattern>

 </servlet-mapping>

 <servlet>

         <servlet-name>StimulsoftAction</servlet-name>

         <servlet-class>com.stimulsoft.webviewer.servlet.StiWebViewerActionServlet</servlet-class>

 </servlet>

 <servlet-mapping>

         <servlet-name>StimulsoftAction</servlet-name>

         <url-pattern>/stimulsoft_webviewer_action</url-pattern>

 </servlet-mapping>

</web-app>

...

 

 

Остальные блоки web.xml, в которых прописаны необходимые сервлеты для работы, оставляем без изменения. Index.jsp отредактируем по примеру ниже приведенного кода:

 

Index.jsp

...

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<%@ taglib uri="http://stimulsoft.com/designer" prefix="stidesignerfx" %>

<%@ taglib uri="http://stimulsoft.com/viewer" prefix="stiviewerfx" %>

 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Stimulsoft Reports.Fx for Java</title>

</head>

<body>

<h1 align="center">My first report!</h1>

<stidesignerfx:iframe

width="100%" height="90%" align="middle"

styleClass="" frameborder="0" styleId=""

marginheight="4" marginwidth="10" name="stiviewer"

scrolling="no" style="" title="report"/>

</body>

</html>

...

 

 

В JSP добавляем taglib директивы (см. описание тэгов). Они позволят работать с заказными тэгами на странице:

 

Index.jsp

...

<%@ taglib uri="http://stimulsoft.com/designer" prefix="stidesignerfx" %>

<%@ taglib uri="http://stimulsoft.com/viewer" prefix="stiviewerfx" %>

...

 

 

Добавьте тэг <stidesignerfx:iframe/>, это аналог html тэга iframe с поддержкой всех его атрибутов. В результате деплоя приложения получим как на рисунке снизу:

 

 

 

Описание заказных тегов

 

Существует разделение на два компонента: DesignerFx и ViewerFx, это видно из выше приведенного кода. Рассмотрим компонент на примере DesignerFx (у ViewerFx все аналогично):

 

Index.jsp

...

<stidesignerfx:link text="a link for jumping to the Designer"/>

<stidesignerfx:button value="a button for jumping to the Designer"/>

<stidesignerfx:frame title="analog of the html tag frame which contains a Designer"/>

<stidesignerfx:iframe title="analog of the html tag iframe which contains a Designer"/>

...

 

 

Все это аналоги одноименных html тегов с поддержкой всех атрибутов. Также список стандартных атрибутов расширен для отображения нужного отчета и задания значений переменных для отчета. Атрибут report="SimpleList.mrt" откроет отчет с именем SimpleList.mrt. Переменные в отчет можно передать двумя способами:

 

1. Установить значение у атрибута variableStr в виде строки следующего формата: "Variable1=value1&Variable2=value2". В данном случае в отчет будет передано две переменные Variable1 со значением value1 и Variable2 со значение value2. Например, для того чтобы по нажатию кнопки открывался отчет с именем MyFirstReport.mrt, и в отчете переменная MyVar имела значение stidesignerfx, нужно отредактировать файл index.jsp:

 

Index.jsp

...

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*" %>

<%@ taglib uri="http://stimulsoft.com/designer" prefix="stidesignerfx" %>

<%@ taglib uri="http://stimulsoft.com/viewer" prefix="stiviewerfx" %>

 

<html>

<head>

<title>Report</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

 

<body>

<stidesignerfx:button value="Run the report designer" report="MyFirstReport.mrt" variableStr="MyVar=stidesignerfx" />

</body>

</html>

...

 

 

2. Так же есть возможность передавать параметры в отчет в виде Map <String, String>. Переделаем страницу следующим образом (Listing 6). В этом случае на странице будет загружаться отчет с именем MyFirstReport.mrt и в него будут передаваться два параметра:

 

Index.jsp

...

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*" %>

<%@ taglib uri="http://stimulsoft.com/designer" prefix="stidesignerfx" %>

<%@ taglib uri="http://stimulsoft.com/viewer" prefix="stiviewerfx" %>

 

<html>

<head>

<title>Report</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

<body>

<%

Map<String, String>variableMap= new HashMap<String, String>();

variableMap.put("Variable1", "var1");

variableMap.put("Variable2", "var2");

request.setAttribute("myMap", variableMap);

%>

<stidesignerfx:iframe report="MyFirstReport.mrt" variableMap="myMap"

width="100%" height="100%" align="right"

styleClass="" frameborder="0" styleId=""

marginheight="1" marginwidth="1" name="stidesignerfx"

scrolling="no" style="" title="отчет" />

 

</body>

</html>

...

 

 

Здесь данные передаются в виде HashMap, данный параметр должен находиться в request или session, а ключ, под которым он там будет находиться, необходимо передать тегу в виде атрибута variableMap. Применение сразу двух атрибутов variableMap и variableStr не допускается.