【问题标题】:Java web app redirect to URL depending on where the request came fromJava Web 应用程序根据请求的来源重定向到 URL
【发布时间】:2015-09-24 08:40:32
【问题描述】:

我知道标题不是很好,但我不确定如何解释它,所以我将描述这个场景。

首先,我使用的是 MVC 设计。

有两个资源UserTopic。用户信息位于/users/{id},有一个选项可以浏览该用户创建的主题,该选项重定向到/users/{id}/topics。当用户删除我希望他发送给/topics/{id}/delete 的主题时,我认为这应该由我的TopicController 处理。

现在的问题是:在我的TopicController 中,如何将用户重定向回/users/{id}/topics?通常,当浏览所有主题时,它会返回/topics。基本上如果请求来自用户主题列表,我需要在删除主题后将他返回。

基本上我需要一个更优雅的解决方案

if(requestURI.contains("/users") 
   return "redirect:/users/{id}/topics" 
else 
   return "redirect:/topics"

【问题讨论】:

    标签: java model-view-controller web-applications spring-boot


    【解决方案1】:

    在映射到/topics/{id}/delete 的 TopicController 处理程序中,您需要执行任何您需要删除主题的操作,然后执行以下操作:

        ...
        redirectAttrs.addAttribute("id", account.getId()); 
        return "redirect:/users/{id}/topics";
    }
    

    更新:-

    /users/{id} -> 调用 1 个处理程序返回用户信息
    /users/{id}/topics -> 调用 1 个处理程序返回用户主题
    /topics/{id}/delete -> 调用 1 个处理程序删除一个 用户主题

    如果用户删除了他/她的主题,那么您不应该总是重定向到/users/{id}/topics,因为他们选择删除主题时所在的位置?

    如果用户在/topics 上,那么他们不能删除主题,对吧?

    您是否有将用户从/topics/{id}/delete 引导到/topics 的用例?我不这么认为。

    【讨论】:

    • 当然,但如果用户正在浏览所有主题,则在删除某些内容后,他需要重定向到“/topics”。所以我的控制器处理程序方法需要根据情况重定向到两个不同的地方
    • 如果您发布控制器代码会很有用。听起来你没有足够的处理程序。不太明白您的用例从 1 个调用到操作 -> 1 个处理程序 -> 1 个重定向的变化?
    • 我还没写。基本上我需要一个更优雅的解决方案 if(requestURI.contains("/users") return "redirect:/users/{id}/topics" else return "redirect:/topics"
    • 那么会有一个用户可以浏览的所有主题的列表,他可以选择删除其中一个或多个主题,然后重定向到/topics/{id}/delete,然后他必须返回列表,即/topics
    • 用户在/topics 上看到的内容与他们在/users/{id}/topics 上看到的内容有什么区别? /topics 是否提供全局列表,即。所有用户主题的混搭?如果用户管理他们自己的主题,那么他们必须在/users/{id}/topics 上,对吗?在这种情况下,如果他们希望删除另一个,您应该将其退回。
    猜你喜欢
    • 2014-10-24
    • 1970-01-01
    • 2016-08-28
    • 2017-03-31
    • 2023-01-31
    • 2014-04-01
    • 2017-03-02
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多