工作積累Java篇

行創雲篇

一 、後端控制的頁面跳轉

  1. 第一種跳轉到某個視圖層,如tiles文件中定義的login,指向頁面的/WEB-INF/views/account/login.jsp
    所以當我使用return new ModelAndView("login");時實際是找到tiles中名爲login的視圖,渲染對應的login.jsp頁面到返回給前端顯示。[渲染視圖和頁面數據]

    tiles.xml部分代碼:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE tiles-definitions PUBLIC
    	    "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
         "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
    <tiles-definitions>
    	<!-- account settings -->
       <definition name="login" extends="simpleLayout">
            <put-attribute name="content" value="/WEB-INF/views/account/login.jsp"/>
        </definition>
       <definition name="regist" extends="simpleLayout">
           <put-attribute name="content" value="/WEB-INF/views/account/regist.jsp"/>
       </definition>
      ···
      <!--公司主頁-->
     <definition name="trace-home" extends="singleLayout">
     	   <put-attribute name="content" value="/WEB-INF/views/trace/home.jsp"/>
      </definition>
     <!--項目主頁-->
      <definition name="project-index" extends="ns-layout">
     	   <put-attribute name="content" value="/WEB-INF/views/trace/project-index.jsp"/>
      </definition>
     <definition name="trace-index" extends="simpleLayout">
      	  <put-attribute name="content" value="/WEB-INF/views/trace/index.jsp"/>
     </definition>
    </tiles-definitions>
    
    
  2. 第二種,拼接地址跳轉,相當於戳後臺指定接口。如CommonTraceController.java中有如下模塊,當我在控制層執行如下代碼時return new ModelAndView(new RedirectView("/trace", true));時,會去控制層找到xx/trace接口,按CommonTraceController.java中聲明的接口實際返回return new ModelAndView("project-index"),這個時候同第一種請求方式,即在tiles.xml中找到標籤爲“project-index”的頁面/WEB-INF/views/trace/project-index.jsp,渲染對應jsp的視圖和數據

    注:public RedirectView(String url, boolean contextRelative)函數表示重定向的一種構造方式,url表示需要重定向的地址,contextReleative表示是否延續之前的請求地址。如在localhost:8080/login下請求了該控制層,當contextReleative=true的會重定向到localhost:8080/trace;反之false會重定向到localhost:8080/login/trace

    CommonTraceController.java部分代碼

    @Controller
    @RequestMapping("/trace")
    public class CommonTraceController extends BaseController{
    	@RequestMapping(value={"/index"}, method = RequestMethod.GET)
    		public String index(Model model) {
       	 return "trace-index";
      }
    
    @RequestMapping(value={"/home"}, method = RequestMethod.GET)
    public String home(Model model) {
        return "trace-home";
    }
    
    @RequestMapping(value={""}, method = RequestMethod.GET)
    public String projectIndex(Model model) {
        return "project-index";
    }
    ···
    // 選擇合同公用頁面
    @RequestMapping(value={"/public/select/contract"}, method = RequestMethod.GET)
    public String publicSelectContract(Model model) {
        return "trace-public-select-contract";
    }
    // 選擇材料公用頁面
    @RequestMapping(value={"/public/select/material"}, method = RequestMethod.GET)
    public String publicSelectMaterial(Model model) {
        return "trace-public-select-material";
    }
    // 選擇材料類別公用頁面
    @RequestMapping(value={"/public/select/material/category"}, method = RequestMethod.GET)
    public String publicSelectMaterialCategory(Model model) {
        return "trace-public-select-material-category";
    }
    

}
```

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章