2008-10-13 5 views
27

grails 응용 프로그램의 색인 페이지 모델을 채우는 올바른 방법은 무엇입니까? 기본적으로 IndexController가 없으며,이 목록과 모델의 목록을 가져 오는 다른 메커니즘이 있습니까?grails 색인 페이지에 대한 모범 사례

답변

36

나는 이것이 올바른 방법이라고 주장하지 않을 것이지만, 일을 시작하는 한 가지 방법입니다. 제어기를 디폴트로 설정하는 것은 그리 많은 일이 아닙니다. UrlMappings.groovy에 매핑을 추가

class QuoteController { 

    def index = { 
     ... 
    } 
} 

무엇을로드 할 것은 이미 다른 작업의 일부인 경우 단순히 재 :

class UrlMappings { 
    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 
     "500"(view:'/error') 
    "/" 
     { 
      controller = "quote" 
     } 
    } 
} 

그럼 지금은 기본 컨트롤러에 인덱스 액션을 추가

def index = { 
    redirect(action: random) 
} 

또는 정말 일부 재사용,가는 서비스 로직을 넣어 얻을 :

class QuoteController { 

    def quoteService 

    def index = { 
     redirect(action: random) 
    } 

    def random = { 
     def randomQuote = quoteService.getRandomQuote() 
     [ quote : randomQuote ] 
    } 
} 
+2

:

다음은 내 완료 UrlMappings.groovy입니다. 내가 "="를 ":"로 바꿀 때까지는 나에게 효과가 없었습니다. –

+0

'static defaultAction = "random"'- 인덱스 액션에서 리다이렉트하는 대신 defaultAction static 필드를 값으로 원하는 액션 이름을 가진 컨트롤러에 추가 할 수 있습니다. – topr

4

좋은 답변 : 인덱스 페이지의 모델을 채워야하는 경우 바로 인덱스 .gsp를 인덱스 컨트롤러로 변경해야합니다.

악의적 인 대답 : 컨트롤러가 '*'인 필터를 만들면 정적 페이지에서도 실행됩니다.

19

위의 Ed T의 예제를 사용할 수 없습니다. 아마 그때 Grails가 바뀌었을까요?

일부 실험 후

일부는 그물에 뒤지고, 나는 UrlMappings.groovy에두고 결국 :

"/"(controller: 'home', action: 'index') 

내 HomeController는 다음과 같습니다

class HomeController { 

    def index = { 
    def quotes = = latest(Quote.list(), 5) 
    ["quotes": quotes, "totalQuotes": Quote.count()] 
    } 

} 

그리고 에서

, 내가 index.gsp이 파일. 이로 인해보기에 index.gsp 파일이 필요하지 않으므로 제거했습니다. 단지 UrlMappings.groovy에

"/index.gsp"(uri:"/")

를 추가하는 Grails는 1.3.6에서

0

나를 위해 잘 일했다. 앞에서 설명한 것과 같이 새로운 컨트롤러와 매핑을 추가하는 것과 같은 효과가 있습니다. `: 나는`UrlMappings 아마 읽고해야 "/"{ "인용"컨트롤러를} 생각

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

     "/"(view:"/index") 
     "500"(view:'/error') 

     "/index.gsp"(uri:"/") 
    } 
} 
+1

uri로 리디렉션이 UrlMappings에서 작동합니까? 나는 그것을 시도했다 (약간 다른 사용법을 위해), 그리고 그것을하지 않았다. 컨트롤러가 null이라는 오류가 발생했습니다. 컨트롤러에서 리디렉션해야했습니다. – mcv