2014-12-08 2 views
0

Grails 애플리케이션의 "기본"레이아웃 파일 (아래 포함)에 일부 GSP 변수가 설정되어 있습니다. 이러한 변수의 값은 sitemesh가 렌더링 한 GSP 페이지에서 액세스 할 수없는 것으로 보입니다. 또한 태그에 의해 렌더링되는 템플릿에는 보이지 않습니다. 아래의 scope = "request"(코드 참조) 설정을 시도했지만 차이가없는 것으로 보입니다. GSP 변수의 범위 지정 규칙을 분명히 이해하지 못했습니다.레이아웃에서 설정된 GSP 변수가 페이지에서 보이지 않음

누구나 GSP 변수의 범위가 어떻게 정해지고 레이아웃에서 템플릿으로 모든 방법을 전달할 수 있는지에 대한 권장 사항을 제시 할 수 있습니까? 여기

<!DOCTYPE html> 
<%-- <html lang="${org.springframework.web.servlet.support.RequestContextUtils.getLocale(request).toString().replace('_', '-')}"> --%> 
<html lang="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'}"> 

<head> 
    <title><g:layoutTitle default="${meta(name:'app.name')}" /></title> 

    <meta charset="utf-8"> 
    <meta name="viewport"  content="width=device-width, initial-scale=1.0"> 
    <meta name="description" content=""> 
    <meta name="author"   content=""> 

    <asset:javascript src="bootstrap.js" /> 
    <theme:load /> 
    <asset:javascript src="application.js" /> 
    <asset:stylesheet src="application.css" /> 
    <asset:link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> 

    <g:layoutHead /> 

    <%-- Defineform body layout column dimensions. These values are used by Bootstrap based forms to 
     layout using configured column widths and offsets. --%> 
    <g:set var="labelWidth" value="${grailsApplication.config.ark.layout.labelWidth ?: 'col-sm-3'}" scope="request" />   
    <g:set var="controlWidth" value="${grailsApplication.config.ark.layout.controlWidth ?: 'col-sm-4'}" scope="request" /> 
    <g:set var="controlOffset" value="${grailsApplication.config.ark.layout.controlWidth ?: 'col-sm-offset-3'}" scope="request" /> 

    <%-- For Javascript see end of body --%> 
</head> 

<body> 
    <g:render plugin="arkUi" template="/layouts/menu/navbar"/> 
    <g:render plugin="arkUi" template="/layouts/content"/> 
    <g:render plugin="arkUi" template="/layouts/footer"/> 

    <!-- Include deferred Javascript files and other resources --> 
    <asset:deferredScripts/> 
</body> 

</html> 
+0

이 앱이나 플러그인입니까? 전자의 경우, 디폴트 값을'Config.groovy'에 넣는 것이 어떻습니까? –

+0

많은 수의 플러그인이 시각적 구성 요소를 제공하는 응용 프로그램입니다. 응용 프로그램은 부트 스트랩 그리드 클래스의 형태로 기본 레이아웃 메트릭을 정의합니다.이 클래스는 플러그인 제공 구성 요소에서 선택할 수 있기를 원합니다. 쉽기는하지만, 우리는 언제나 설정 값을 받아서 사용할 수 있습니다. 모달 대화 상자를 사용하는 경우 (예를 들어) 페이지 단위로 재정의 할 수도 있습니다. 최상위 변수를 설정 한 다음 페이지 수준에서 재정의 할 수 있다는 것이 합리적입니다. 그러나 ... 기쁨이 없습니다. 실험 결과에 따르면, 나는 망했다고 생각합니다. –

+0

페이지의 요청 범위에 변수를 배치하는 것은 아무 것도하지 않는 것처럼 보입니다. 예를 들어 으로 렌더링 된 템플릿에서는 보이지 않습니다. 나는 스코프 옵션에 어떤 이점이 있는지 잘 모르겠습니다. –

답변

2

문제 Grails의 처음 사용하는 레이아웃 결정 (다른 것들 중)에 대상 GSP 페이지를 구문 분석하고, 는 레이아웃 GSP를 파싱하고이를 결합한다. 따라서 레이아웃은 페이지에서 설정 한 변수를 볼 수 있지만 그 반대는 아닙니다.

관련 문제