invocation拦截setAttr出错(重复了)

invocation拦截setAttr出错(重复了)

一、页面拦截已经配置

/**配置全局拦截器*/

public void configInterceptor(Interceptors me) {

me.add(new ViewInterceptor());// View 页面 拦截

      }

二、拦截器ViewInterceptor.java程序

public class ViewInterceptor implements Interceptor {

@Override

public void intercept(Invocation inv) {

seo(inv);//SEO

inv.invoke();

}

private void seo(Invocation inv) {

 Controller controller = inv.getController();

String path = inv.getActionKey();

String uri = controller.getRequest().getRequestURI();

Seo seo = new SeoService().getByPagePath(path, uri);

controller.setAttr("seo", seo);

}

三、Controller中提取后,重复

public class PlantController extends Controller{

/*beging--重置SEO*/

Seo seo = getAttr("seo");

if(seo!=null){

seo.setTitle(plant.getTitle()+"_"+seo.getTitle());

reeshi_seo.setKeywords(seo.getKeywords()+","+plant.getCompany());

seo.setDescription(seo.getDescription()+"。"+plant.getTitle()+","+plant.getCompany());

setAttr("seo", seo);

}  }

/*end--重置SEO*/

}

四、render后页面出现的问题

 1.png

 

 2.png




 


评论区

peterpeter

2017-09-10 21:51

SEO在模板中采用include方式, #include("_meta.html"), #(seo.title??)

peterpeter

2017-09-10 21:53

目的是实现每个厂房信息的SEO都不同

JFinal

2017-09-10 22:02

没看懂你的代码在表达什么。SEO 拦截器本质上就是 setAttr 一下,然在页面读取出来就可以了,没有任何复杂逻辑存在

建议看一下 jfinal club 项目,在 com.jfinal.club.project 包下面有一个 ProjectSeo.java 文件。十几行代码的事

peterpeter

2017-09-11 17:13

@JFinal 找到问题了,拦截器中setAttr(对象),然后再对象.set()然后再对象setAttr不起作用,须要重新new一个对象,改天看club的seo

JFinal

2017-09-12 11:48

@peterpeter 我觉得你把简单事情复杂化了,本质就是一个 setAttr 然后,模板中 #(value) 取值的事

热门反馈

扫码入社