相关文章:
jmesa系列之一:什么是Jmesa
jmesa系列(二)Jmesa源码的包结构解读
这次目标很简单:实现服务器端分页列表功能。暂时不包括过滤、排序及Ajax。
诸如过滤、排序及Ajax功能会在过程中逐一加上去。
下面以一个简单的商品列表来说明
JMesa的使用方法。
从JSP的代码可以看出.开发者不需要在页面上使用任何的JSP Tag来显示表格,只需要简单把products变量Print出来即可.而显示的逻辑基本上是放到Controller了.肯定有同学有疑问,这样的使 用方法远远不及使用JSP Tag方便啊!为什么要这样做?
这里的显示仅仅是做一个API的使用Demo,为了说明我们可以直接使用
Jmesa的API,构造出只要你能想得到的形式的表格展现,而不限制于JSP Tag.你想封装成跟EC一样的Jsp Tag是很容易的事.那就是说,ExtreamTable只可以是JSP Tag.而Jmesa是可以提供Jsp Tag还有Jsp Tag以外的东西.在架构上,作者从EC到Jmesa的转变就是值得肯定的.对了,作者在
Jmesa中引进了
Groovy,目的我想就是可以让开发人员动态地决定表格的显示啦.效果跟JSP Tag一样,并且更方便.
说说我目前在做的一个报表数据显示应用,同一个页面,可以显示不同构的数据列表,支持过滤,排序等.如果使用JSP Tag是很难达到动态显示数据列的目的,而用Jmesa的API转而易举..
本文的目的是让大家对Jmesa有个感性的认识.而他的各个元素,如
Limit,
CoreContext这些,将会在接下来的时间详细说明.
代码:Java代码仅有一实体类,一个Service,及一个Controller
Product.java
java 代码
- public class Product {
- private static int index = 1;
- private int id;
- private String name;
- private int price;
- private Date createdTime;
- private String description;
-
- public Product(String name, int price) {
- this.id = index ++;
- this.name = name;
- this.price = price;
- this.createdTime = new Date();
- this.description = name;
- }
-
- }
ProductService.java
java 代码
- public class ProductService {
- private static List
<product> products; </product>
-
- static {
- products = new ArrayList
<product>(); </product>
- products.add(new Product("java", 10));
- products.add(new Product("ruby program", 50));
- products.add(new Product("c++ start", 30));
- products.add(new Product("python cookbook", 40));
- products.add(new Product("java in a nut shell", 10));
- products.add(new Product(".net framework", 20));
- products.add(new Product("are you ok?", 21));
- products.add(new Product("are your light on?", 10));
- products.add(new Product("go to hell", 14));
- products.add(new Product("my name is red", 16));
- products.add(new Product("perl cookbook", 15));
- products.add(new Product("groovy in action", 20));
- products.add(new Product("ruby on rails", 100));
- }
-
- public List findProduct(int pageNum, int pageSize) {
- int start = (pageNum - 1) * pageSize;
- int end = start + pageSize;
- int count = 0;
- List
<product> ret = new ArrayList
<product>(); </product>
</product>
-
- for (int i = 0; i < products.size(); i++) {
- if (i < start)
- continue;
- if (i >= end)
- break;
- ret.add(products.get(i));
- }
- return ret;
- }
-
- public int getCountOfProduct() {
- return products.size();
- }
- }
Demo避免使用数据库,在内存中初始化一些实体及实现分页查询功能。
ListProductController .java
java 代码
- ProductController.java
- public class ListProductController extends AbstractController {
- private ProductService productService;
- private int maxRows;
-
- public void setProductService(ProductService productService) {
- this.productService = productService;
- }
-
- public void setMaxRows(int maxRows) {
- this.maxRows = maxRows;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- WebContext webContext = new HttpServletRequestWebContext(request);
-
- LimitFactory limitFactory = new LimitFactoryImpl("product", webContext);
- Limit limit = limitFactory.createLimit();
-
- int totalRows = productService.getCountOfProduct();
-
-
- if (limit.isExportable()) {
- RowSelect rowSelect = new RowSelectImpl(1, totalRows, totalRows);
- limit.setRowSelect(rowSelect);
- } else {
- RowSelect rowSelect = limitFactory.createRowSelect(maxRows, totalRows);
- limit.setRowSelect(rowSelect);
- }
-
- List items = productService.findProduct(limit.getRowSelect().getPage(), limit.getRowSelect().getMaxRows());
-
-
- CoreContextFactory factory = new CoreContextFactoryImpl(webContext);
- CoreContext coreContext = factory.createCoreContext(items, limit);
-
-
- HtmlTableFactory tableFactory = new HtmlTableFactory(webContext, coreContext);
-
- HtmlTable table = tableFactory.createTable("id", "name", "price", "createdTime");
- table.setCaption("products");
- table.getTableRenderer().setWidth("600px;");
-
- ToolbarFactory toolbarFactory = new ToolbarFactoryImpl(table, webContext, coreContext);
- Toolbar toolbar = toolbarFactory.createToolbar();
- View view = new HtmlView(table, toolbar, coreContext);
- Object result = view.render();
-
- request.setAttribute("products",result);
- return new ModelAndView("list.jsp");
- }
-
- }
list.jsp
java 代码
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
-
-
- <script type=<span class="string">"text/javascript" src="scripts/jmesa.js"></script>
-
- <script type=<span class="string">"text/javascript">
- function onInvokeAction(id) {
- setExportToLimit(id, '');
- createHiddenInputFieldsForLimitAndSubmit(id);
- }
- </script>
-
-
-
Product listing
- <%
- out.println(request.getAttribute("products"));
- %>
-
-
-
省略Spring配置文件及Web.xml
分享到:
- 2007-06-30 12:50
- 浏览 7453
- 评论(6)
- 论坛回复 / 浏览 (5 / 16777)
- 查看更多
相关推荐
- **org.jmesa.core.preference**:处理 JMESA 的选项,使用 Java 的 `Properties` 类实现用户配置的存储。 2. **org.jmesa.limit**:提供过滤功能,通过 `Limit` 接口控制数据流,可以保存用户查询时的参数,如...
jmesa.jar jmesa.jar
1. **list.jsp**:这通常是一个示例页面,演示了如何在实际应用中使用Jmesa标签来展示数据列表。 2. **css**:这个目录包含CSS样式文件,用于定义表格的外观和布局,使表格更加美观和易于阅读。 3. **WEB-INF**:...
本文将分享在Struts2环境中成功使用Jmesa的经验和心得。 首先,我们需要了解基础环境配置。本例中使用的Struts2版本为2.0.11,Spring为2.5.1,Freemarker为2.3.12,而Jmesa则是2.2.9。开发环境选用的是Eclipse 3.3...
在本示例中,我们将探讨如何使用Jmesa进行数据操作,虽然没有直接提供jar包,但我们可以从其源代码或官方仓库获取。 **Jmesa核心功能** 1. **数据流处理**: Jmesa支持对连续的数据流进行处理,它可以处理来自各种...
例如,使用jmesa读取CSV文件,进行数据清洗,然后应用统计模型进行预测,最后将结果以图表形式展示出来。 五、总结 jmesa2.3.4凭借其全面的功能、良好的兼容性和高效的性能,成为数据科学家和开发者的得力助手。...
本文将深入探讨JMESa的基本概念、使用方法以及它的优势。 ### 1. JMESa简介 JMESa是基于Java的,设计灵感来源于JSON Path和JMESPath,它扩展了这些语言,使其能够直接应用于SQL查询。这种工具特别适合于那些需要...
1. **SQL查询支持**:JMESA支持标准的SQL语法,允许开发者使用熟悉的SQL语句来查询数据库。这不仅降低了学习成本,也使得数据库操作更为直观。 2. **高性能**:JMESA采用优化的查询执行引擎,能够处理大规模的数据...
JMESA,全称Java Medical Image Analysis,是一个用于医学图像分析和处理的开源库。它提供了丰富的功能,包括图像显示、处理...同时,积极参与开源社区,及时获取更新和支持,会让你在使用JMESA的过程中更加得心应手。
【描述】"jmesa-2.3_examples.war-source.zip" 重复三次,暗示这个压缩文件是关于JMESa 2.3版本的示例应用的WAR源码,可能是因为文件名被错误地重复输入了。WAR文件是Web应用程序的归档格式,通常用于Java服务器环境...
jmesa表格标签 依赖包 jmesa-3.0.jar
jmesa-2.4.4.jar 有源码
例如,我们可以使用JMESA读取数据库中的数据,然后将其转化为JSON对象,以便于前端解析。 前端接收到服务器响应的JSON数据后,利用JavaScript解析JSON,更新JMESA表格的内容。JMESA提供了一些API,比如`updateTable...
** JMESA SERVLET ** JMESA(Java Model for Export and...通过这个项目,开发者可以学习到如何使用基本的Servlet技术结合JMESA库实现数据导出,同时了解Web应用程序的基本工作流程,为今后学习更高级的框架打下基础。
jmesa-snapshot.jar jmesa用到的jar
描述中提到的“博文链接:https://liuzidong.iteye.com/blog/789767” 是一篇关于Jmesa使用的详细介绍文章,可能包含了如何实现上述功能的具体步骤和示例代码,由于描述部分为空,我们无法获取更多细节,但可以推测...
jmesa-3.0.4 最新版 供大家学习下载
超立方体是JMESA处理多维数据的主要工具,它允许用户处理三维甚至更高维度的数据。通过`HyperCube`类,可以创建和操作具有多个维度的数据集。超立方体的切片、聚合和投影等功能使得数据分析变得更为便捷。 ### 6. ...
在实际项目开发过程中,作者之前使用过其前身ExtremeTable,并在使用过程中遇到了一些bug,最终决定转向JMesa。 #### 二、准备工作 1. **下载最新版本**: 可以从[http://code.google.com/p/jmesa/]...
3. **调用分页方法**:使用JMESa提供的API进行分页操作,如`Pageable list = jmesa.paginate(startIndex, pageSize);`,其中startIndex和pageSize分别代表起始索引和每页大小。 4. **渲染视图**:在前端界面使用...