jmesa之View

为了让jmesa分页变得更加的合理,还有一些地方需要完善,比如做个论坛之类的,像JE那样,数字分页的方式已经解决了,下面还有两个问题需要解决,一是那些条件搜索框要去掉(去掉工具栏上的搜索按钮直接调整工具栏就可以了),二是内容的上下均显示分页信息。要解决这两个问题,就得自己定义HtmlView了,默认使用的样式显示方式由HtmlView类决定,此类的源码:
public class HtmlView extends AbstractHtmlView {
    public Object render() {
        HtmlSnippets snippets = getHtmlSnippets();
        HtmlBuilder html = new HtmlBuilder();
        html.append(snippets.themeStart());
        html.append(snippets.tableStart());
        html.append(snippets.theadStart());
        html.append(snippets.toolbar());
        html.append(snippets.filter());
        html.append(snippets.header());
        html.append(snippets.theadEnd());
        html.append(snippets.tbodyStart());
        html.append(snippets.body());
        html.append(snippets.tbodyEnd());
        html.append(snippets.footer());
        html.append(snippets.statusBar());
        html.append(snippets.tableEnd());
        html.append(snippets.themeEnd());
        html.append(snippets.initJavascriptLimit());

        return html.toString();
    }
}


照着上面的代码很容易实现自己的显示样式。
解决问题一:

//html.append(snippets.filter());


解决问题二:

这里有个需要注意的地方:

.....
String toolbar = snippets.toolbar();

....
html.append(toolbar);
..........

html.append(toolbar);
		
html.append(snippets.tableEnd());
........


之所以要这么做,一是因为这样使用更加合理,二是因为如果连续调用两次snippets.boolbar会导致其内部的字符串进行累加,那么下面的分页将会显示两次。

写完自定义的HtmlView后,将它赋给tableFacade:

...
tableFacade.setView(new CustomHtmlView());

return tableFacade.render();


最后,在相应的JSP页面申明:

...
<jmesa:tableFacade id="user_table" .... view="com.util.CustomHtmlView">
...


到此,整个jmesa的大部分问题都得到了解决,还好,可以通过博客的方式记录下来,不然自己早没这个动力了。

你可能感兴趣的:(html,jsp)