jfinal freemarker自定义标签中如何获取全局拦截器自定义的值?

盈盈520 发布于 2016/02/18 11:24
阅读 1K+
收藏 0

jfinal freemarker自定义标签中如何获取全局拦截器自定义的值?

怎么获取url

//全局拦截器
public void intercept(Invocation inv) {
		Controller controller = inv.getController();
		HttpServletRequest req = controller.getRequest();
		req.setAttribute("base", da.ProjectBase(req));
		req.setAttribute("resAdi", da.ProjectBase(req) + RES_ADMIN_PATH + "/" + da.AdminBase(req));
		req.setAttribute("resFrn", da.ProjectBase(req) + RES_FRONT_PATH + "/" + da.FrontBase(req));
		req.setAttribute("resCom", da.ProjectBase(req) + RES_COMMON_PATH);
		inv.getController().setAttr("url", inv.getController().getPara());
		inv.invoke();
	}

//freemarker自定义标签
public void execute(Environment env, Map params, TemplateModel[] loopVars,
			TemplateDirectiveBody body) throws TemplateException, IOException {
		Page<ReCarbty> page = ReCarbty.dao.paginate(getParaToInt(0, 1), 1, "select *", "from re_carbty where status='P' order by createtime desc, id desc");
		env.setVariable("tag_list", DEFAULT_WRAPPER.wrap(page.getList()));
		env.setVariable("tag_page", DEFAULT_WRAPPER.wrap(page));
		body.render(env.getOut());
	}


加载中
0
JFinal
JFinal

   从 execute 方法中的 Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body 这四个参数入手,在使用自定义标签时,可以传入参数,那么在拦截器中通过 req.setAttribute(...) 设置的变量在页面中再传递给自定义标签即可,甚至可以将整个 request 对象传给自定义标签。

   另外,在拦截器中可以通过 inv.getController().setAttr(key, value) 直接对 request 存入值。

盈盈520
回复 @JFinal : 我在全局拦截器已经设了这个了 inv.getController().setAttr("url", inv.getController().getPara()); 怎么在freemarker自定义的标签里获取url的值。
盈盈520
回复 @JFinal : HttpServletRequest req = this.getRequest();????
JFinal
JFinal
回复 @盈盈520 : 在拦截器中使用 inv.getController().setAttr("_req", inv.getController().getRequest()); 然后在使用自定义标签时通过 _req 得到 request 并传给自定义传标签
盈盈520
怎么传request
返回顶部
顶部