加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Spring MVC:从基本控制器重定向 – 如何获取重定向到的路径?

发布时间:2020-12-15 01:49:02 所属栏目:大数据 来源:网络整理
导读:我进行了搜索和搜索,但没有找到任何说不可能的东西,也没有找到解释如何做的事情. 如果您有一个扩展的基本控制器,我理解请求映射方法也是继承的. 所以. public abstract class BaseController{ @RequestMapping(value="hello",method=RequestMethod.GET) publ

我进行了搜索和搜索,但没有找到任何说不可能的东西,也没有找到解释如何做的事情.

如果您有一个扩展的基本控制器,我理解请求映射方法也是继承的.

所以….

public abstract class BaseController
{

    @RequestMapping(value="hello",method=RequestMethod.GET)
    public String hello(Model model) {
        return "hello-view;
}

……像这样的控制器……

@Controller
@RequestMapping("/admin/")
public abstract class AdminController
{
 ....
}

…将继承侦听/ admin / hello的方法,该方法返回hello-view.

这一切都很好.

但是如果我有一个重定向的BaseController方法怎么办:

public abstract class BaseController
{

    @RequestMapping(value="hello",method=RequestMethod.POST)
    public String hello(Model model) {
        return "redirect:/success/;
}

据我了解,重定向需要相对或绝对URL而不是视图名?

那么我的AdminController如何确保重定向发生在/ admin / success /?

BaseController方法如何获取AdminController上类级别@requestMapping的句柄?

这可能吗?

最佳答案
一种选择:

public abstract class BaseController
{
    /** get the context for the implementation controller **/
    protected abstract String getControllerContext();

    @RequestMapping(value="hello",method=RequestMethod.GET)
    public String hello(Model model) {
        return "redirect:"+getControllerContext()+"success/";
    }
}

这是管理员控制器.

@Controller
@RequestMapping(AdminController.context)
public abstract class AdminController
{
    static final String context = "/admin/";
    @Override
    protected String getControllerContext() {
        return context;
    }
 ....
}

涉及可能有效的反射的另一种选择……:

public abstract class BaseController
{
    String context = null;

    @RequestMapping(value="hello",method=RequestMethod.GET)
    public String hello(Model model) {
        return "redirect:"+getControllerContext()+"success/";
    }

    // untested code,but should get you started.
    private String getControllerContext() {
        if ( context == null ) {
            Class klass = this.getClass();
            Annotation annotation = klass.getAnnotation(RequestMapping.class);
            if ( annotation != null ) {
                context = annotation.value();
            }
        }
        return context;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读