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