我现在定义了一个指令,在指令内定义了一个变量product,我的本意这个变量的作用域就是在指令内有效,指令外应该访问不到才是。
public void exec(Env env, Scope scope, Writer writer) {
	Object categoryId = idExpr.eval(scope);
		
	List<Product> list = srv.getProductList(categoryId);
		
	for(Product product : list) {
		scope.setLocal("product", product);
		stat.exec(env, scope, writer);
	}
}但是我在当前Controller请求内也设置了一变量product,执行渲染结果是这个product的值变成上面那个指令变量product最后一个赋值了
public void index() {
	Product product = srv.getProduct(get(0));
	if(null == product) {
		render("product.html");
		return;
	}
		
	set("product", product);
		
	Template template = srv.getTemplate(product.getTemplateId());
	if(null == template) {
		render("product.html");
	} else {
		render(template.getTemplateFilename());
	}
}现在能做的只能是避免变量名重复,但是如果定义的指令很多的话,这样变量定义就是个头痛问题。
但是又想想,如果当前Controller请求内的变量进到指令的html代码里调用,这样也会出现不知道是哪个的问题,很矛盾啊。
 
 
 
 
 
