JMesa is a dynamic HTML table that allows you to filter, sort, paginate, export and edit your data however you need to. What you will find here is a carefully thought out API that is very easy to use and can be modified for your own needs. Note: JMesa requires JDK 1.5 or above. As of version 2.3.4 you can use the JBoss Retro project to run JMesa under JDK 1.4.
Now that the apache commons BeanUtils 1.8 is released I would highly recommend using it with JMesa. The BeanUtils is a core library in JMesa and the 1.8 release works great with nested beans.
David Sills has an article on JMesa at JavaLobby. It is a great article that taps into just how customizable JMesa is! In addition there has been a sighting of JMesa out on Tech Blog.
To see the live examples just download the example war file and place it in your servlet container. It was tested with Tomcat 6, but should work with any servlet container. If you need help with JMesa I would ask that you use the Google Groups set up. As similar questions get posted on the groups I will add those questions and answers to the Recipes page. Per user request the javadocs are now online as well!
Tip: Did you know that you can save the state of the table so when a user returns to a JMesa table it looks exactly how they saw it last? I just updated one of our internal sites to use the feature throughout and it occurred to me that this may be a hidden feature to many developers.
7/01/2008 : JMesa now offers Grails support in the form of GSP tags in the 2.3.2 release!
7/16/2008 : JMesa now has Spring and Struts2 integration in the 2.3.3 release. In addition there is support for grouping columns.
7/30/2008 : The JMesa 2.3.4 release has direct support for portlets, and also a build for JDK 1.4 using the JBoss Retro project. In addition there is a new PDF view and a few more Locales.
12/06/2008 : The JMesa 2.4 release is about rolling out the JMesa JavaScript file as a jQuery plugin, as well as continuing to improve the API. The main thing you need to do is include the new jquery.jmesa.js with the updated jmesa.js file. This release offers a lot of improvements with the JavaScript handling and many improvements with the encoding.
1/25/2009 : The JMesa 2.4.1 release now works with jQuery 1.3. There was a deprecated method JMesa was using that has now been removed in the lastest jQuery library. I also released an updated war file as well.
4/05/2009 : The JMesa 2.4.2 release fixes some small bugs and offers a few improvements to the API.
6/10/2009 : The JMesa 2.4.3 release fixes some small edge cases that I have been meaning to release.
6/29/2009 : The jmesa-tabbed-worksheet-javascript.zip file is a patch to enable tabbing in the worksheet. I wanted to put this out as a separate download to encourage developers that needed this functionality to be able to try it out. For anyone that uses this patch can you let me know how things work out? Also let me know what browser and operating system that you tested it on. The more feedback the better! Just email me at jeff.johnston.mn@gmail.com. I also wanted to thank Venalyo, the person responsible for this patch!
7/09/2009 : I am posting this out as a call for help from the community and see if anyone is interested in updating the Grails plugin! If you are just contact me at jeff.johnston.mn@gmail.com and I will try to help in any way that I can.
10/25/2008 : This is more or less a call to the community that want Maven support. If you would like the JMesa jar file in the Maven repositories I have decided to leave it up to the community to finish the work started. There is some support for Maven in that you can pull the jar from my site.
It would be great to have more Locales supported out of the box. If your Locale is not currently supported you should consider taking some time to create a messages file and send it to me. More details are on the Messages page.
Creating tables with JMesa is very easy. For instance to create an HTML table with every feature available can be accomplished in four lines of code:
TableFacade tableFacade = TableFacadeFactory.createTableFacade(id, request);
tableFacade.setColumnProperties("name.firstName", "name.lastName", "term", "career", "born");
tableFacade.setItems(items);
String html = tableFacade.render();To fully customize this table is just as easy. You can find out more by reading the recipes, tutorials, and examples.