Sorry, it's internal-only, but I have a beautiful system which links up with Hibernate on the backend via DWR calls to create grids VERY easily.
A filter page needs only to contain an input called "type" which contains the driving class name for an HQL query.
Filter input fields are named the same as the Hibernate property names of an Entity, or from<property name> to<property name>
A DWR call is made to a helper class sending the uurlencoded String of the filter forms. The helper class matches the input names up against known properties on the entity and creates an HQL query which is used to create a java.util.List of Object where each object in the array is a column.
This helper class is stashed in the HttpSession, and its ID returned.
Also returned is an array of GridColumn objects which is used to initialize my ColumnMode.
My DataModel is a custom one which uses DWR to communicate with the helper class in the session using the ID returned to which it delegates requests for data.
My result is a very neat ListManager class which can accepts filter pages, and preview pages, and allows detail of the selected line. Filters and the resulting Grid are tabs in the "north" Region, details are viewed in the "center" Region.
You can pop up as many as you want in containers all over your page.
var foo = createDialog("CountrySubEntity View");
dl = new ListManager(