本教程介绍了在Java 表工具中使用JavaServer Faces(JSF)运行Web设计器和Web查看器的基础知识。
下载Stimulsoft Reports Java最新版本
首先,我们需要创建动态Web项目。

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

您还可以转换为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正版授权,请点击“咨询在线客服”哟!
标签: 表Java 表控件Stimulsoft
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!