Spring MVC和自定义标签

mib*_*tec 6 java spring-mvc taglib

我想在spring-mvc应用程序中的自定义taglibs中使用spring-beans.原因TagLib-Instances不是由spring实例化的,我不能使用dependnecy-injection.

我的下一个想法是通过拦截器将spring-context添加到请求中,并从tag-class中的请求中获取它.

有没有更好的方法在taglibs中使用spring?春天有什么东西可以随时使用吗?如果spring-mvc中还没有customtag-support,是否有办法用依赖项填充现有对象?

public class MyTag extends TagSupport {
  @Autowired 
  private MyObject object;

  public void setMyObject(MyObject myObject) {
    this.myObject = myObject;
  }

  public int doEndTag() {
    ApplicationContext context = request.getAttribute("context");
    context.populate(this);

    return object.doStuff();
  }
}
Run Code Online (Sandbox Code Playgroud)

mib*_*tec 3

最后,实现这一点的工作方法是将应由 spring 启动的字段声明为静态,并让其启动一个 Tag-instance

public class MyTag extends TagSupport {
  private static MyObject myObject;

  @Autowired
  public void setMyObject(MyObject myObject) {
    MyTag.myObject = myObject;
  }

  public int doEndTag() {
    return object.doStuff();
  }
}
Run Code Online (Sandbox Code Playgroud)