Grails為開發(fā)者提供了一個(gè)controller列表的默認(rèn)主頁,在開發(fā)時(shí)用起來確實(shí)很方便,但總不能把它用到產(chǎn)品環(huán)境下吧??墒窃趃rails-app/views下面怎么找不到這個(gè)文件,也沒有哪個(gè)controller和主業(yè)相關(guān)?實(shí)際上這個(gè)默認(rèn)的主頁獨(dú)立放在web-app下,文件名是index.gsp。把它修改為:
<html>
????<head>
????????<title>Welcome?to?Grails</title>
????<meta?name="layout"?content="main"?/>
????</head>
????<body>
????Hello?World!
????</body>
</html>刷新后主頁變成了Hello World!
好了,本文結(jié)束,接下來的工作就是你的了。慢著,如果不想重新編寫一個(gè)主頁,而是想把它重定向到一個(gè)controller怎么辦?
Grails是建立在Java的基礎(chǔ)之上的,在Grails項(xiàng)目中我們可以很方便的使用Java的各種技術(shù),包括JSP?,F(xiàn)在把index.gsp重新命名為index.jsp,內(nèi)容改為<% response.sendRedirect("yourController/yourAction"); %>,刷新后主頁就重定向到了你定義的路徑。
事實(shí)上GSP是JSP的擴(kuò)展,這意味著你同樣可以在GSP中使用session、servletContext,、request和response對象。把index.jsp重新改回index.gsp,內(nèi)容改為${response.sendRedirect("yourController/yourAction")}同樣可以達(dá)到重定向效果。
還可以自定義一個(gè)Tag來實(shí)現(xiàn)重定向:
def?redirectPage={attrs->
??def?url=attrs.get('url')
??response.sendRedirect("${request.contextPath}"+url)
}
最后介紹最簡單的解決方法:
打開grails-app/conf/UrlMappings.groovy,這是Grails中URL映射的配置文件,相當(dāng)于Rails中的routes.rb
把它作如下修改即可:
class?UrlMappings?{
????static?mappings?=?{
??????"/"(controller:"yourController",action:"yourAction")
??????"/$controller/$action?/$id?"{
??????????constraints?{
?????????? //?apply?constraints?here
??????????}
???????}
????}
}