两个对文章列表的分页,一个没有搜索关键词,一个是根据关键词搜索得到列表。模板没有用freemarker,用的jsp。没有搜索的在jsp中用的链接是href="/admin/article/${i }",其中${i }是页码,在ArticleController中对应的方法是index();用搜索的在jsp中用的链接是href="/admin/article/search/${i }",其中search是ArticleController定义的方法search()
没有搜索的每页显示正常,有搜索的第一页显示,但点击第2页就出现/admin/article/search.jsp找不到的错误。但这里的search不是search.jsp而是controller中定义的search()。
即便单独建一个SearchController,定义index()方法,配好路由。但用/admin/search却出现index.jsp找不到的错误。
如果能给一个jsp中关键词搜索分页的demo就好。
public void search(){
String keyword=getPara("searchtext");//接收关键词文本输入文本
String keyword2=getSessionAttr("keyword2");//接收session供第2页以上的页面使用
Page articlepage;
if (keyword!=null){
if (keyword2!=null){
if (keyword!=keyword2){
keyword2=keyword;
}
articlepage=Article.dao.paginate(getParaToInt(0, 1), 20, "select *", " from article where Title like '%"+keyword2+"%' order by ID DESC");
}else{
articlepage=Article.dao.paginate(getParaToInt(0, 1), 20, "select *", " from article where Title like '%"+keyword+"%' order by ID DESC");
setSessionAttr("keyword2", keyword);
}
List articlelist=articlepage.getList();
int begin = 0;
int end = 0;
//最多显示当前页面的前后20个页码
if (articlepage.getPageNumber() - 20 < 1) {
begin = 1;
} else {
begin = articlepage.getPageNumber() - 20;
}
if (articlepage.getTotalPage() < articlepage.getPageNumber() + 20) {
end = articlepage.getTotalPage();
} else {
end = articlepage.getPageNumber() + 20;
}
setAttr("begin", begin);
setAttr("end", end);
setAttr("articles", articlelist);
setAttr("pages", articlepage);
render("article_search_list.jsp");
}
}