我正在实施替换短链接的机制.

我需要将请求转发给另一个控制器.我在模型上找到了如何在spring中实现的示例,但我不理解如何在RESTController中实现

我发现的示例(使用模型)

@Controller
public class ShrotLinkForwardController {

   @RequestMapping("/s/*")
   public String myMethod(HttpServletRequest request) {
       return "forward:/difmethod";
   }
}

或者我看错了方向,我需要做一个过滤器?

UPD.我不知道最终终点,它是用转发方法计算的.所以,我不能自动连接其他控制器

推荐答案

有两种方法可以实现你想要的.

1、直接在目标控制器上调用该方法.

控制器只是普通的Spring bean.你可以通过autowire获得它.

@Controller
public class ShrotLinkForwardController {

  @Autowired
  OtherController otherController;

  @RequestMapping("/s/*")
  public String myMethod(Model model) {
    otherController.doStuff();
    return ...;
  }
}

2.通过返回字符串触发重定向

要触发重定向,请try 返回String而不是ModelAndView.

这就是你在问题中提到的方法.注意,语法应该是forward:/forwardURL.forward:后面的字符串是指向另一个控制器的URL,而不是方法名.

@Controller
public class ShrotLinkForwardController {

  @RequestMapping("/s/*")
  public String myMethod(Model model) {
    return "forward:/forwardURL";
  }
}

Java相关问答推荐

当在具有约束布局的AlertDialogue内部使用时,回收器视图布局宽度很奇怪

我们如何直接使用kerminldap服务票证来通过ldap进行身份验证并形成LDAP上下文

在spring—data中自动发现native—sql查询期间遇到重复的SQL别名[id]

为什么我们不能实现两个接口,其中一个接口有相同的签名,其中一个接口有默认的实现在java?'

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

Exe4j创建的应用程序无法再固定在任务栏Windows 11上

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

如何获得执行人?

如何解释Java中for-each循环中对Iterable的强制转换方法引用?

SonarLint:只能有条件地调用方法(S)

使用存储在字符串变量中的路径目录打开.pdf文件

是否为计划任务补偿系统睡眠?

根本不显示JavaFX阿拉伯字母

使用SWIG将C++自定义单元类型转换为基本Java类型

在java中使用不同的application.properties-jar而不使用Spring

用于Java的Visual Studio代码完成不起作用

为什么使用lo索引来解决二进制搜索问题不同于使用hi索引?

由于版本不匹配,从Java 8迁移到Java 17和Spring 6 JUnit4失败

升级版本后出现非法访问错误

ResponseEntity.控制器截断响应的JSON部分