文章目錄
行創雲篇
一 、後端控制的頁面跳轉
-
第一種跳轉到某個視圖層,如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>
-
第二種,拼接地址跳轉,相當於戳後臺指定接口。如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"; }
}
```
參考資料