java - Spring MVC 和自定义标签

标签 java spring-mvc taglib

我想在 spring-mvc 应用程序的自定义标签库中使用 spring-beans。因为 TagLib-Instances 没有被 spring 实例化,我不能使用依赖注入(inject)。

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

有没有更好的方法在 taglibs 中使用 spring? 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();
  }
}

最佳答案

最后的工作方法是将应该由 spring 启动的字段声明为静态的,并让启动一个标签实例

public class MyTag extends TagSupport {
  private static MyObject myObject;

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

  public int doEndTag() {
    return object.doStuff();
  }

关于java - Spring MVC 和自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4706259/

相关文章:

jsf - 如何确保JSF taglib子组件的id不同?

Grails:从另一个标签库中调用一个标签库

java - 如何从 JAR 应用程序中动态加载类以在另一个 JAR 中使用?

java - HashMap 在对象发生变化时自动更新

javascript - 如何将网页中的字符串输入作为 Java 对象传递给 @RestController?

Spring Boot application.properties

liferay - 使用 liferay-ui taglib 出现 NullPointerException

java - NumberFormatException - Azure Blob 列表

Java TCP Socket 接收指定长度的字节

java - 在新环境中首次运行 Spring Boot 应用程序时如何运行 data.sql 脚本?