2012-02-07 2 views

답변

8

GSP에서 메소드를 정의 할 수 없습니다. 당신이 원한다면 당신은 익명 함수를 가질 수 있습니다 : D

예 : 그 작은 포맷이 인라인 될 수 있기 때문에이 예는, 너무 많은 이해가되지 않습니다

<% 
    def prettify = { "***$it***" } 
%> 
<h1>${prettify(someText)}</h1> 

있지만. 보기에 대한 추가 논리의 모든 종류의 경우, 나는 OverZealous recommendation을 따르고 taglib을 사용합니다.

+3

대부분의 경우에 Taglib (또는'g : render'라고 부르는 서브 템플릿)은 올바른 해결책입니다. 그러나 때로는 GSP에서 한 번만 작성하는 것이 좋지만, 외부 파일에 대한 그러한 승격을 보증하지는 않는 반복 논리의 작은 비트가 있습니다. 이 경우, 나는 이렇게 쓰고 싶다 :''클로저를 정의하는 이중 말괄선 {{}}을 주목하십시오. 그런 다음 이것을 일반 함수처럼 사용하십시오 :'$ {greet ("Sam")}' – Tobia

6

아니요. 이것은 GSP의 목적에 완전히 위배됩니다. GSP는 프로그래밍 논리가 아닌 시각적 인 마크 업 정보를 처리하도록 설계되었습니다. GSP 에 직접 함수를 던지면이 코드를 유지할 수 없게됩니다.

왜 태그에 넣지 않습니까? 이것은 태그가있는 것입니다. 그것이 당신의 GSP에서만 사용된다는 것은 중요하지 않습니다. GSP에는 ​​간단한 디스플레이 로직과 출력 내용 만 포함되어야합니다. 재사용 가능한 코드는 항상 taglib 또는 복잡한 로직을위한 일종의 컨트롤러 또는 서비스에 포함되어야합니다.

Gaelyk 또는 Grails와 같이 사용중인 프레임 워크는 언급하지 않았습니다. (어떤 이유로 서버에서 순수한 Groovy를 사용하지 않는 한) 더 많은 정보없이 좋은 해결책을 추천 할 실용적인 방법은 없습니다.

GSP에서 JSP 스타일의 태그 (<% %>)를 사용하고 있다면 아마도 잘못했을 것입니다.

더 나은 대답을 원하면 프로그래밍 환경, 목표 및 이유 (taglib를 사용하지 않는 이유)에 대한 자세한 정보를 제공하십시오.

+0

행에 대한 템플릿이 있다고 가정합니다. 이 템플릿은이 GSP 외부에서 측정하지 않습니다. GSP 내부에서 템플릿을 선언 할 수 있습니까? –

+0

' 템플릿을 사용합니다. – fixitagain

+0

은 계층과 같은 작은 내부 템플릿에 유용 할 수 있습니다. – Guillaume

관련 문제