java - Spring MVC 3 使用 sitemesh 重定向/转发

标签 java spring-mvc sitemesh

大家好,

我正在使用 spring mvc 3 + sitemesh 和 spring security 3。我需要执行以下场景。 我为绕过用户和普通用户使用两种不同的布局。我遵循的方法工作正常,直到我遇到一些 JavaScript 弹出窗口,因为我注意到页面加载了两次并弹出了同一个窗口两次。请验证我的方法。

Controller 类-

    @RequestMapping(value = "/mainMenu")
    public class PortalController {

     @RequestMapping(method = RequestMethod.GET)
    public String byPassPortal() {

    if (User.bypassMenu()) {
         //return "redirect:user.html";
         //return "forward:user.html";
         return "/user/user";
    } else {
        // send user to the portal page
        logger.debug("Redirect to the main page");
        return "mainMenu";
    }
    }
}

站点网格装饰器 xml -

<decorators defaultdir="/decorators">
<decorator name="layout" page="layout.jsp">
    <pattern>/user*</pattern>
</decorator>
<decorator name="default" page="default.jsp">
    <pattern>/*</pattern>
</decorator>
</decorators>

这是我的观察结果 - 如果我使用 return "redirect:user.html"; & return "forward:user.html";对于用户来说,它可以很好地使用正确的布局( layout.jsp ),因为装饰器会通过模式 <pattern>/user*</pattern> 捕获它。 。但问题是表单将加载两次,并且弹出窗口两次。

如果我使用return "forward:user.html";return "/user/user";弹出窗口只会出现一次,但布局错误。原因应该是它不会从 url 模式 <pattern>/user*</pattern> 的装饰器中捕获。并且它将使用错误的默认布局( default.jsp )。

我认为有一些东西需要从 spring 端处理,而不是从 sitemesh 处理。您能在这方面给予一些指导吗?预先感谢您。

最佳答案

我发现了这个问题。与 spring 或 sitemesh 无关。这完全是关于我使用的第二种布局。它包含两个 '' 标签,并且由 sitemesh 提交了两次。希望这对任何遇到此类错误的人有所帮助。 – Sam 0 秒前编辑

关于java - Spring MVC 3 使用 sitemesh 重定向/转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5313952/

相关文章:

java - 从查询中获取结果作为自定义对象列表

java - Gradle 不会从存储库导入 jargs

java - Spring MVC Controller 方法参数如何工作?

grails - grails我如何调用一个 Controller Action 并将结果 View 嵌入到另一个 Controller 中

Java 浏览器插件或手动安装 Java

Java Jsyn设置过滤器的输入、处理和获取输出

java - 同一装饰器配置文件中的多个页面

javascript - 带有 Grails <content> 标签的 Angularjs

spring-mvc - 用于显示列表错误的表单绑定(bind)

java - PostgreSQL:列 "BOOLEAN_VALUE"是数字类型,但表达式是 boolean 类型提示:您需要重写或强制转换表达式