Установка и описание дизайнера

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

 

Рассмотрим пример, создания простой страницы в web-дизайнере. Для этого необходимо, в директорию WebContent\WEB-INF\Lib\ поместить следующие библиотеки: stimulsoft.lib.jar, stimulsoft.reports-base.jar, stimulsoft.reports-report.jar, stimulsoft.reports-flex.jar, stimulsoft.reports-web.jar, stimulsoft.reports-webdesigner.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_webdesigner</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>StimulsoftDesignerAction</servlet-name>

<servlet-class>com.stimulsoft.webdesigner.servlet.StiWebDesignerActionServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>StimulsoftDesignerAction</servlet-name>

<url-pattern>/stimulsoft_webdesigner_action</url-pattern>

</servlet-mapping>

</web-app>

...

 

 

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

 

index.jsp

...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%@page import="java.io.FileOutputStream"%>

<%@page import="java.io.FileInputStream"%>

<%@page import="com.stimulsoft.report.utils.data.StiDataColumnsUtil"%>

<%@page import="com.stimulsoft.report.dictionary.StiDataColumnsCollection"%>

<%@page import="com.stimulsoft.report.dictionary.StiDataColumn"%>

<%@page import="com.stimulsoft.report.utils.data.StiSqlField"%>

<%@page import="com.stimulsoft.report.dictionary.dataSources.StiDataTableSource"%>

<%@page import="com.stimulsoft.report.utils.data.StiXmlTable"%>

<%@page import="com.stimulsoft.report.utils.data.StiXmlTableFildsRequest"%>

<%@page import="com.stimulsoft.webdesigner.StiWebDesigerHandler"%>

<%@page import="com.stimulsoft.webdesigner.StiWebDesignerOptions"%>

<%@page

import="com.stimulsoft.report.dictionary.databases.StiXmlDatabase"%>

<%@page import="java.io.File"%>

<%@page import="com.stimulsoft.report.StiSerializeManager"%>

<%@page import="com.stimulsoft.report.StiReport"%>

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

pageEncoding="UTF-8"%>

<%@taglib uri="http://stimulsoft.com/webdesigner" prefix="stiwebdesigner"%>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Stimulsoft Webdesigner for Java</title>

<style type="text/css">

</style>

</head>

<body>

<%

final String reportPath = request.getSession().getServletContext().getRealPath("/reports/Master-Detail.mrt");

final String xmlPath = request.getSession().getServletContext().getRealPath("/data/Demo.xml");

final String xsdPath = request.getSession().getServletContext().getRealPath("/data/Demo.xsd");

final String savePath = request.getSession().getServletContext().getRealPath("/save/");

 

StiWebDesignerOptions options = new StiWebDesignerOptions();                          

StiWebDesigerHandler handler = new StiWebDesigerHandler(){

public StiReport getEditedReport(HttpServletRequest request){

try{

StiReport report = StiSerializeManager.deserializeReport(new File(reportPath));

report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));

return report;

} catch (Exception e){

e.printStackTrace();

}

return null;

}

 

public void onOpenReportTemplate(StiReport report, HttpServletRequest request){

report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));

}

 

public void onNewReportTemplate(StiReport report, HttpServletRequest request){

report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));

try{

// In new report if you want to use wizard, you must populate report with datasources

StiXmlTableFildsRequest tables = StiDataColumnsUtil.parceXSDSchema(new FileInputStream(xsdPath));

for (StiXmlTable table : tables.getTables()){

StiDataTableSource tableSource = new StiDataTableSource("Demo." + table.getName(), table.getName(), table.getName());

tableSource.setColumns(new StiDataColumnsCollection());

for (StiSqlField field : table.getColumns()){

StiDataColumn column = new StiDataColumn(field.getName(), field.getName(), field.getSystemType());

tableSource.getColumns().add(column);

}

tableSource.setDictionary(report.getDictionary());

report.getDictionary().getDataSources().add(tableSource);  

}                      

} catch (Exception e){

e.printStackTrace();  

}                  

}

                       

public void onSaveReportTemplate(StiReport report, StiRequestParams requestParams, HttpServletRequest request) {

try {

FileOutputStream fos = new FileOutputStream(savePath + requestParams.designer.fileName);

if (requestParams.designer.password != null) {

StiSerializeManager.serializeReport(report, fos, requestParams.designer.password);

} else {

StiSerializeManager.serializeReport(report, fos, true);

}

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

};          

pageContext.setAttribute("handler", handler);

pageContext.setAttribute("options", options);

%>

 

<stiwebdesigner:webdesigner

handler="${handler}" options="${options}" />

</body>

</html>

...

 

 

В JSP необходимо добавить taglib директивы. Они будут работать с пользовательскими тегами на странице.

 

 

Тег Custom Stimulsoft

 

index.jsp

...

<%@ taglib uri="http://stimulsoft.com/webdesigner" prefix="stiwebdesigner"%>

...

 

Добавьте тег <stiwebdesigner:resources />, тег используется для загрузки необходимых ресурсов (CSS и JS) для веб-дизайнера. У него отсутствуют атрибуты, и он должен быть помещен внутрь тега HTML <head>.

 

 

Описание тэга webdesigner

 

Тэг содержит следующие атрибуты:

strel11 handler [required] – com.stimulsoft.webdesigner.StiWebDesigerHandler объект для управления web-дизайнером;

strel11 options [optional] – Объект StiWebdesignerOptions для настройки webdesigner. Если нет - опция используется по умолчанию;

strel11 designerID [optional] – Строковое значение идентификатора элемента HTML веб-дизайнера. Если более чем один веб-дизайнер размещен на HTML странице, каждый веб-дизайнер должен иметь различные идентификаторы.

 

web.xml

...

<stiwebdesigner:webdesigner handler="${handler}" report="${report}" />

...

 

 

Описание StiWebDesigerHandler

 

Для управления событиями дизайнера, класс который применяет StiWebDesigerHandler должен быть создан и настроен в теге StiWebDesigner-а. Происходит на открытии {@link StiReport}.

 

strel11 public StiReport getEditedReport(HttpServletRequest request);

Возникает при загрузке веб-дизайнера. Здесь необходимо осуществление загрузки отчета и его заполнение (если необходимо).

 

strel11 public void onOpenReportTemplate(StiReport report, HttpServletRequest request);

Возникает при открытии отчета (объекта StiReport). Метод предназначен для заполнения отчета данными из источника (если необходимо).

 

strel11 public void onNewReportTemplate(StiReport report, HttpServletRequest request);

Возникает при создании отчета (объекта StiReport). Метод предназначен для заполнения отчета данными из источника (если необходимо). Если необходимо создать новый отчет при помощи мастера, необходимо передать в отчет данные из источника.

 

strel11 public void onSaveReportTemplate(StiReport report, String reportName, HttpServletRequest request);

Возникает при сохранении отчета (объекта StiReport).