需求如下:
动态生成的静态html页面在webapp下的doc目录中,但是在doc下的目录级数不固定,是根据文件名字动态生成的,如名字为index,则生成的html页面为:webapp/doc/index.html;名字为2014-02-23-index,则生成的html页面为:webapp/doc/2014/02/23/index.html。以此类推。
有一个HtmlController接收/doc的请求,可以renderJsp("/doc/")跳转到doc目录下,
但是现在如何根据不同的/doc的请求返回不同的目录呢?如 请求:/doc/2014,renderJsp("/doc/2014"); 请求:/doc/2014/02,renderJsp("/doc/2014/02"); 以此类推。
我记得spring mvc有类似的配置通配的功能,Jfinal能实现类似需求吗
@Jfinal
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
url目前不支持通配符,像你说的需求可以通过参数的不同render不同的渲染,或者你可以写自己的handler来处理你的全局请求和响应###### JFinal Handler 可以无限扩展路由规则,因为它可以改变到达的 url 值,该值在 Handler 类中是 String target。具体点是创建一个 DocHandler 和一个 DocController 配合处理,大致代码如下:
public class DocHandler extends Handler { public void handle(String target,HttpServletRequest request,HttpServletResponse response,boolean[] isHandled) { if (target.startsWith("/doc")) { target = target.substring(0, 4); request.setAttribute("view", target.substring(4)); } nextHandler.handle(target, request, response, isHandled); }DocController 就更简单了,一行代码搞定:
render(getAttr("view"));######明白了,多谢!###### 其实还可以更省代码:
public class DocHandler extends Handler { public void handle(String target,HttpServletRequest request,HttpServletResponse response,boolean[] isHandled) { if (target.startsWith("/doc")) { RenderFactory.me().getJspRender(target.substring(4)).setContext(request, response).render(); isHandled[0] = true; } }这样就连 DocController 都不需要了