`
yeqing4562011
  • 浏览: 5870 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
文章分类
社区版块
存档分类
最新评论

GridReport报表数据解析及传递,struts自定义result的重要性

阅读更多

最近参与的项目,很多的地方都是需要报表的,因为牵扯各地区的费用及信息广泛。所以光报表就有200多张。看最近项目里报表编写的代码,有些想法,所以记录下来,一是分享,是自己也想吸收大家的意见。
(注:这篇文章,不是讲某种报表的配置方法,而是报表应该怎么传输数据,更方便、快捷、有效的一种方案,有什么不足之处,提出来虚心受教,请不要谩骂)

 

1.大家都知道,报表有很多种,图形报表FusionCharts、锐浪GridReport,数据如何和报表相关(JS文件中有函数),文档中依然写明,不多做阐述。

 

2.比如FusionCharts的图形报表,它的数据和flash图形文件的数据关联,有xml文件,JSON格式数据。

以上两种方法我个人是不建议使用,xml文件的使用占空间,数据量的大的时候,io操作异常频繁。

JSON格式,数据传输的时候较为麻烦。

 

3.其实在各种报表的文档中已有方法。就是将xml文件的内容,解析成字符串的形式,但其格式仍然是xml文件内容的格式。只是将xml文件写成一个字符串。

 

4.正题来了,就是在什么地方将数据转换成报表所需要的数据格式呢?

我看过一些报表,有得人,将数据的格式写成js的变量。

var dataString ='<chart yAxisName="Sales Figure" caption="Top 5 Sales Person" numberPrefix="$" useRoundEdges="1" bgColor="FFFFFF,FFFFFF" showBorder="0">\n\
	<set label="Alex" value="25000"  /> \n\
	<set label="Mark" value="35000" /> \n\
	<set label="David" value="42300" /> \n\                             NO!!!!!!!!!!!!!!!!!!!!!!
	<set label="Graham" value="35300" /> \n\
	<set label="John" value="31300" />\n\
\n\
</chart>';

 然后他可以把数据库中的数据取出,经过ajax请求后,将value值替换。

这种方式不可取,如果我需要将label是可变的,那怎么办,当然也有办法,不过很笨。

再着,我200张报表都这么写,我相信我会很恶心。  也不利于维护。

 

5.在action,bo,dao,解析都是不应该的。 这样的话,我们就需要一个类特殊的类,去解析这些数据,去格式化这些数据。

 

6.方法:

 

struts的自定义result类型,就是我们所需要的了。

 

(1)定义一个GridReportResult类,然后我们这里将数据格式化。细节部分我就不多说了。

比如:

public class GridResult extends BaseResult// BaseResult基础返回结果抽象类
{
	private static Logger log = Logger.getLogger(GridResult.class);

	protected void doExecute(String arg0, ActionInvocation invocation) throws Exception
	{
		// TODO Auto-generated method stub
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json;charset=" + request.getCharacterEncoding());
		PrintWriter output = response.getWriter();

		StringBuffer sb = new StringBuffer();// 报表数据字符串
		try
		{

			BaseAction baseAction = (BaseAction) invocation.getAction();

			sb.append("<report>\n");
			sb.append("<xml>\n");

代码过多就不贴了。大家应该能明白我的意思。
 

(2)在struts的配置文件中去定义

<action name="getGridXml" class="base.web.actions.report.GridReportAction"
			method="getReportXml">
                     <!-- gridResult自定义返回类型-->
			<result name="success" type="gridResult"></result>
		</action>

(3)js中获取数据,ajax的方法,我就不多说了。获取result直接是一个格式化好数据,那我就可以直接给相应的函数了,不需要自己再次格式化了。

 

 

GridReport ---------------> data格式

就是---------------->gridResult

 

综上所述,我想说的就是报表所需的格式化的数据,我们都可以用一个自定义的result给他封装好,那么我们js中所获得的数据,就很简单了。

100张同一类型的报表,我都可以使用这一个gridResult 结果类型。

由此可见,struts自定义result的重要。

 

注:写的时候出了点意外,状态不好,写的不对不好的地方,我会修改。

 

 

分享到:
评论

相关推荐

    STRUTS自定义标签

    STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS...

    struts自定义标签详解

    Struts 是一个强大的Java Web应用程序开发框架,它提供了一套丰富的自定义标签库,使得开发者在构建用户界面时能够更加方便地处理业务逻辑和数据展示。本文将详细讲解Struts中的Bean Tags、HTML Tags和Logic Tags的...

    struts2 Result类型

    Struts2 Result类型是Struts2...总之,Struts2 Result类型是控制应用程序流程的重要组成部分,理解并熟练运用它能帮助我们构建更加灵活和健壮的Web应用。结合源码学习和实际项目实践,可以进一步提升我们的开发能力。

    struts2 result配置详解

    Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果.render 到一个 JSP 页面。Struts...

    Struts自定义类型转换器

    无论是Struts1还是Struts2,自定义类型转换器都是一个非常实用的功能,它允许开发者根据具体需求定制数据转换逻辑,从而提高程序的灵活性和可维护性。在实际开发过程中,选择合适的转换策略并正确实现转换逻辑是非常...

    struts2 自定义标签

    在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...

    struts实现自定义标签

    在 Struts 中,自定义标签是提供一种灵活的方式,使得视图层(通常为 JSP 页面)能够更好地与业务逻辑交互,从而提高代码的可读性和可维护性。本文将深入探讨如何在 Struts 中实现自定义标签。 一、自定义标签概述 ...

    struts2 result type 介绍

    在Struts2中,Result Type是控制流程的重要部分,用于定义动作执行后如何转发或重定向到特定的视图。这篇博客文章将深入探讨Struts2的Result Type,以及它在实际应用中的工作原理。 首先,我们需要了解Struts2的...

    struts2自定义结果类型demo

    - 在`struts.xml`配置文件中,可以通过`&lt;result-types&gt;`标签声明自定义结果类型,指定其类全名和别名。 - 示例: ```xml &lt;result-types&gt; &lt;result-type name="myCustomResult" class=...

    基于struts2 自定义标签 分页

    自定义标签是Struts2的一个重要特性,允许开发者扩展框架的功能,提供更友好的界面元素。在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与...

    Struts 自定义转换器

    在Struts中,转换器(Converter)扮演着数据格式化和验证的重要角色。当我们处理用户输入时,这些输入可能来自各种来源,如网页表单、JSON或XML等,而转换器则负责将这些输入转换为应用程序可以理解和处理的类型。...

    Struts2自定义标签

    自定义标签是Struts2框架中的一个重要特性,它允许开发者创建自己的标签库,以更直观、易读的方式在JSP页面中处理业务逻辑。下面将详细介绍Struts2自定义标签的相关知识点。 首先,理解自定义标签的作用。在传统的...

    Struts2自定义分页标签

    通过自定义分页标签,Struts2开发者能够轻松实现定制化分页,并保持代码的整洁和可维护性。这种方式避免了在多个JSP页面中重复编写分页逻辑,提高了代码复用性,同时降低了出错的可能性。 总之,本资源提供的Struts...

    在Struts2中使用JasperReports生成报表

    总之,结合Struts2和JasperReports可以构建出强大而灵活的报表系统,满足企业对数据可视化的需求。在MyEclipse这样的集成开发环境中,可以更方便地进行开发和调试,提高开发效率。通过熟练掌握这两者的结合使用,你...

    struts1自定义标签

    自定义标签,直接代码,直接模仿开发即可 public class ButtonTag extends AttributeTag { //tld中定义的属性 public String label; public String url; public String click; public String confirm; public ...

    Struts2 Result类型

    Struts2 Result类型是Struts2框架中一个关键的概念,它是控制Action执行后响应到何处的重要组件。在处理用户请求并执行相应的业务逻辑后,Action需要将结果返回给客户端,而Result类型就是用来定义这个返回过程的...

    jQuery+json异步实现JSP和struts2之间的数据传递

    "jQuery+json异步实现JSP和struts2之间的数据传递"是一个典型的应用场景,它结合了前端JavaScript库jQuery与后端MVC框架Struts2,通过JSON这种轻量级的数据交换格式进行高效的数据交互。下面我们将详细探讨这一主题...

    struts2自定义数据类型转换练习

    Struts2作为一款流行的Java Web框架,其在处理用户输入数据时扮演着重要角色。在实际开发中,我们经常遇到需要将HTTP请求参数转换为Java对象的场景,这就是数据类型转换。本练习主要关注如何在Struts2中实现自定义的...

    struts自定义Validator示例

    struts中自定义validator验证 &lt;br&gt;很多时候需要验证“密码”与“重复密码”是否一致,如果放在服务器端验证就浪费资源了。 如何在客户端进行验证呢?JS可以实现,但是struts的validator框架是否能实现呢?-见...

Global site tag (gtag.js) - Google Analytics