【问题标题】:Calling Controller from Tiles Template using Spring 3使用 Spring 3 从 Tiles 模板调用控制器
【发布时间】:2010-11-15 21:34:19
【问题描述】:

我刚刚在我的 Spring MVC 3 应用程序中设置了 Apache Tiles 2。

我创建了我的模板:

 <definition name="baseLayout" template="/WEB-INF/jsp/baseLayout.jsp">
      <put-attribute name="title"  value="Template"/>
      <put-attribute name="header" value="/WEB-INF/jsp/header.jsp"/>
      <put-attribute name="menu"   value="/WEB-INF/jsp/menu.jsp"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/body.jsp"/>
      <put-attribute name="footer"   value="/WEB-INF/jsp/footer.jsp"/>
  </definition>

还有一个欢迎页面:

  <definition name="welcome" extends="baseLayout">
      <put-attribute name="title"  value="Welcome"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/home.jsp"/>      
  </definition>

还有 tile 的属性:

welcome.(class)=org.springframework.web.servlet.view.tiles2.TilesView
welcome.url=welcome

还有我的控制器:

@RequestMapping(value="/welcome", method=RequestMethod.GET)
public ModelAndView home() {
    logger.info("Welcome home yesssssss!");
    ModelAndView mav = new ModelAndView();
    logger.info("Loading Companies");
    mav.addObject("companys", companyService.loadCompanys());
    mav.setViewName("welcome");
    return mav;
}

效果很好。

但是我如何从模板文件中调用另一个控制器,比如 menu.jsp 这将调用像这样的控制器:

@RequestMapping(value="/menu", method=RequestMethod.GET)
public ModelAndView menu() {
    logger.info("get MEnu");
    ModelAndView mav = new ModelAndView();
    logger.info("Loading menu");
    mav.addObject("menu", menu.get());
    mav.setViewName("menu");
    return mav;
}

有什么想法吗?

谢谢

【问题讨论】:

    标签: spring templates tiles2


    【解决方案1】:

    为了调用“菜单”控制器,您需要在属性文件中指定“菜单”以及相应的 url,该 url 必须映射到控制器(就像您为欢迎所做的那样)。

    我可以建议将 .htm 用于视图或将 .do 用于表单等吗? 如果没有,如果您尝试显示视图或尝试映射请求等,很容易混淆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2018-07-30
      • 2011-12-03
      • 2013-03-11
      • 2015-02-11
      相关资源
      最近更新 更多