2

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;
}

何か案が?

ありがとう

4

1 に答える 1

1

'menu'コントローラーを呼び出すには、プロパティファイルで'menu'を対応するURLと一緒に指定する必要があります。これは、コントローラーにマップする必要があります(ようこその場合と同じように)。

ビューには.htmを使用し、フォームなどには.doを使用することをお勧めしますか?これがないと、ビューを表示しようとしている場合や、リクエストなどをマッピングしようとしている場合に混乱しやすくなります。

于 2010-11-16T12:18:43.507 に答える