【Stimulsoft Reports Java教程】使用JavaServer Faces运行Web Designer和Web Viewer

本教程介绍了在Java 表工具中使用JavaServer Faces(JSF)运行Web设计器和Web查看器的基础知识。

下载Stimulsoft Reports Java最新版本

首先,我们需要创建动态Web项目。

Stimulsoft

接下来将Stimulsoft Java Libs添加到项目中。

Stimulsoft

您还可以转换为Maven项目并配置pom.xml文件以使用Maven中的库。

<project         xmlns_xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi_schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>jsfstimulsoft</groupId>    <artifactId>jsfstimulsoft</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>war</packaging>    <build>        <sourceDirectory>src</sourceDirectory>        <plugins>            <plugin>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.5.1</version>                <configuration>                    <source>1.6</source>                    <target>1.6</target>                </configuration>            </plugin>        </plugins>    </build>    <dependencies>        <dependency>            <groupId>com.stimulsoft</groupId>            <artifactId>stimulsoft-reports-libs</artifactId>            <version>2017.1.1</version>        </dependency>    </dependencies> </project>

然后,我们需要创建web.xml文件。在这里,我们配置StimulsoftResource的servlet,检索内容,如* .js文件和图像文件,该StiWebDesignerActionServlet符合Java web designer,在操作StiWebViewerActionServlet符合Java的Web浏览器操作,并且还配置了JavaServer Faces的。

<ml version="1.0" encoding="UTF-8"gt;<web-app xmlns_xsi="http://www.w3.org/2001/XMLSchema-instance"                  xsi_schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"         version="3.0">    <display-name>stimulsoft</display-name>    <welcome-file-list>        <welcome-file>faces/designer.xhtml</welcome-file>    </welcome-file-list>    <session-config>        <session-timeout>60</session-timeout>    </session-config>    <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>    <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>     <servlet>        <servlet-name>Faces Servlet</servlet-name>        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>Faces Servlet</servlet-name>        <url-pattern>/faces/*</url-pattern>    </servlet-mapping>    <context-param>        <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>        <param-value>client</param-value>    </context-param>    <context-param>        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>        <param-value>resources.application</param-value>    </context-param>    <listener>        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>    </listener></web-app>

在下一步中,我们需要实现StiWebDesignerBean来填充 表数据并保存/加载 表模板。

public class StiWebDesignerBean {    StiWebDesignerOptions options;    String designerID = "StimulsoftWebDesigner";    /**     * @return the handler     */    public StiWebDesigerHandler getHandler() {        StiWebDesigerHandler handler = new StiWebDesigerHandler() {            public StiReport getEditedReport(HttpServletRequest request) {                try {                    String reportPath = request.getSession().getServletContext().getRealPath("/reports/Master-Detail.mrt");                    String xmlPath = request.getSession().getServletContext().getRealPath("/data/Demo.xml");                    String xsdPath = request.getSession().getServletContext().getRealPath("/data/Demo.xsd");                    StiReport report = StiSerializeManager.deserializeReport(new File(reportPath));                    report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));                    report.getCustomFunctions().add(new StiCustomFunction() {                        public Object invoke(List<Object> args) {                            return ((String) args.get(0)).substring(                                ((Long) args.get(1)).intValue(), ((Long) args.get(2)).intValue());                        }                        @SuppressWarnings({ "rawtypes", "unchecked" })                        public List<Class> getParametersList() {                            return new ArrayList<Class>(Arrays.asList(String.class, Long.class, Long.class));                        }                        public String getFunctionName() {                            return "subStr";                        }                    });                    return report;                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            public void onOpenReportTemplate(StiReport report, HttpServletRequest request) {                String xmlPath = request.getSession().getServletContext().getRealPath("/data/Demo.xml");                String xsdPath = request.getSession().getServletContext().getRealPath("/data/Demo.xsd");                report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));            }            public void onNewReportTemplate(StiReport report, HttpServletRequest request) {                String xmlPath = request.getSession().getServletContext().getRealPath("/data/Demo.xml");                String xsdPath = request.getSession().getServletContext().getRealPath("/data/Demo.xsd");                report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));                try {                    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, String reportName, HttpServletRequest request) {                try {                    String savePath = request.getSession().getServletContext().getRealPath("/save/");                    FileOutputStream fos = new FileOutputStream(savePath + reportName);                    StiSerializeManager.serializeReport(report, fos);                    fos.flush();                    fos.close();                } catch (Exception e) {                    e.printStackTrace();                }            }        };        return handler;    }    /**     * @return the options     */    public StiWebDesignerOptions getOptions() {        options = new StiWebDesignerOptions();        return options;    }    /**     * @return the designerID     */    public String getDesignerID() {        return designerID;    }}

接下来,我们需要实现StiWebViewerBean。在这里,我们加载Master-Detail.mrt 告模板文件并呈现 表。我们还可以配置Web查看器,例如将背景颜色设置为灰色。

public class StiWebViewerBean {    StiReport report;    StiWebViewerOptions options;    String viewerID = "StimulsoftWebViewer";    StiMailProperties mailProperties;    /**     * @return the report     * @throws StiDeserializationException     * @throws SAXException     * @throws IOException     */    public StiReport getReport() throws IOException, SAXException, StiDeserializationException {        if (report == null) {            FacesContext facesContext = FacesContext.getCurrentInstance();            HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);            String reportPath = session.getServletContext().getRealPath("/reports/Master-Detail.mrt");            report = StiSerializeManager.deserializeReport(new File(reportPath));            String xmlPath = session.getServletContext().getRealPath("/data/Demo.xml");            String xsdPath = session.getServletContext().getRealPath("/data/Demo.xsd");            report.getDictionary().getDatabases().add(new StiXmlDatabase("Demo", xsdPath, xmlPath));            report.render();        }        return report;    }    /**     * @param report     *            the report to set     */    public void setReport(StiReport report) {        this.report = report;    }    /**     * @return the options     */    public StiWebViewerOptions getOptions() {        options = new StiWebViewerOptions();        options.getAppearance().setBackgroundColor(StiColorEnum.Gray.color());        // options.getToolbar().setVisible(false);        return options;    }    /**     * @param options     *            the options to set     */    public void setOptions(StiWebViewerOptions options) {        this.options = options;    }    /**     * @return the viewerID     */    public String getViewerID() {        return viewerID;    }    /**     * @param viewerID     *            the viewerID to set     */    public void setViewerID(String viewerID) {        this.viewerID = viewerID;    }    /**     * @return the mailProperties     */    public StiMailProperties getMailProperties() {        mailProperties = new StiMailProperties();        return mailProperties;    }    /**     * @param mailProperties     *            the mailProperties to set     */    public void setMailProperties(StiMailProperties mailProperties) {        this.mailProperties = mailProperties;    }}

然后,配置faces-config.xml文件并添加必要的bean。

<ml version="1.0" encoding="UTF-8"gt;<faces-config         xmlns_xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi_schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"        version="2.2">    <managed-bean>        <managed-bean-name>webdesignerBean</managed-bean-name>        <managed-bean-class>com.stimulsoft.StiWebDesignerBean</managed-bean-class>        <managed-bean-scope>session</managed-bean-scope>    </managed-bean>    <managed-bean>        <managed-bean-name>webviewerBean</managed-bean-name>        <managed-bean-class>com.stimulsoft.StiWebViewerBean</managed-bean-class>        <managed-bean-scope>session</managed-bean-scope>    </managed-bean></faces-config>

在下一步中,我们需要在WebContent文件夹中创建designer.xhtml页面。

<!DOCTYPE html><html     xmlns_ui="http://java.sun.com/jsf/facelets"    xmlns_h="http://java.sun.com/jsf/html"    xmlns_f="http://java.sun.com/jsf/core"    xmlns_stiwebdesigner="http://stimulsoft.com/webdesigner"><head></head>    <stiwebdesigner:webdesigner options="#{webdesignerBean.options}"        handler="#{webdesignerBean.handler}" designerID="#{webdesignerBean.designerID}"/></html>

我们还需要在WebContent文件夹中创建viewer.xhtml页面。

<!DOCTYPE html><html     xmlns_ui="http://java.sun.com/jsf/facelets"    xmlns_h="http://java.sun.com/jsf/html"    xmlns_f="http://java.sun.com/jsf/core"    xmlns_stiwebviewer="http://stimulsoft.com/webviewer"><head></head>    <stiwebviewer:webviewer report="#{webviewerBean.report}" options="#{webviewerBean.options}"        mailProperties="#{webviewerBean.mailProperties}" viewerID="#{webviewerBean.viewerID}"/></html>

现在,您可以将项目部署到Tomcat并运行它。

Stimulsoft

在下面的屏幕截图中,您可以看到示例代码的结果。

Stimulsoft

Stimulsoft

下载示例

购买Stimulsoft正版授权,请点击“咨询在线客服”哟!

标签: 表Java 表控件Stimulsoft

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月18日
下一篇 2018年10月18日

相关推荐

发表回复

登录后才能评论