используя 3 макета на одной странице GSP - PullRequest
0 голосов
/ 09 марта 2012

это редактирование моего вопроса, который был первым, как применить 2 макета на одной странице gsp, но теперь у меня проблема с 3 макетами :):

Я довольно новичок во всем, что касается CSS и верстки, и я использую версию Grails 2.0 у меня есть следующие модули в моей задаче:
1. main.gsp макет, который в основном имеет хороший заголовок с логотипом компании для всех страниц.
2. макеты mainTabPanle.gsp, которые в основном содержат некоторые основные вкладки, которые должны иметь все страницы 3. Макет reportTab.gsp, который в основном содержит красивые вкладки отчетов и короткий код JavaScript для управления выбранным цветом вкладок, который должен быть на всех страницах gsp отчетов.

Я пытаюсь использовать этот макет reportTab на всех страницах gsp отчетов.

так вот что я получил до сих пор:

main.gsp:

<!doctype html>  
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}"type="text/css">
<g:layoutHead/>
<r:layoutResources />
</head>
<body style="height:100%">
<div>some nice header in here </div>
<g:layoutBody/>
<r:layoutResources />
</body>
</html>

mainTabPanle.gsp (также находится в папке макета)

<g:applyLayout name="main">    
<!doctype html> 
<html> 
<head>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<div>some main tabs here </div> 
<g:layoutBody/>
</body>
<script type="text/javascript">
//script to manipulate main tabs    
</script>
<r:layoutResources />
</body>
</html>
</g:applyLayout>

reportTabPanel.gsp:

<g:applyLayout name="mainTabPanel">    
<!doctype html> 
<html> 
<head>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<div>some reports tab panel </div>  
<g:layoutBody/>
</body>
<script type="text/javascript">
//some script to manipulate report tab item
</script>
<r:layoutResources />
</body>
</html>
</g:applyLayout>

и теперь я использую в заголовке moneyreport.gsp следующую строку:

<meta name="layout" content="reportTabPanel" />

я хочу увидеть хороший заголовок, maintabsPanel и reportTabPanel, но все, что я вижу, это тело moneyreport.gsp

странно то, что если я использую это:

<meta name="layout" content="mainTabPanel" />

внутри moneyreport.gsp я вижу mainTab и тело moneyreport.gsp, как и ожидалось.

что я делаю не так? я не могу использовать 3 макета на одной странице?

спасибо за вашу помощь, ребята ...

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вы можете применить 2 макета на одной странице. Чтобы применить другой макет в файле макета, необходимо использовать тег applyLayout. Ваш отчет должен быть примерно таким:

<g:applyLayout name="main">    
<!doctype html>  
<head>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<div> some nice tabs here </div>
<g:layoutBody/>
</body>
<script type="text/javascript">
few line script handling chosen tab color in here
</script>
<r:layoutResources />
</body>
</html>
</g:applyLayout>
0 голосов
/ 09 марта 2012

первое спасибо за ваш ответ Anuj!

это вроде работа, но неправильно, потому что я получаю странный источник HTML: я получил 2 заголовка и 2 тега тела, так что в основном Grails просто скопировать вставить весь макет вместе, и это не было хорошей HTML-страницей, даже если браузер отображал ее правильно!

Я нашел то, что мне нужно, и это просто с помощью шаблонов! например, у меня есть файл с именем "_mainHeader.gsp", который выглядит следующим образом:

<!-- this is my main header for all gsp pages -->
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>IntentIQ Management System</title>
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}"type="text/css">
<link rel="shortcut icon" href="${resource(dir:'images/myImg',file:'favicon.ico')}" type="image/x-icon"> 

и со всех страниц я могу использовать эти строки, как, например, в page1.gsp:

<g:render template="/templates/mainHeader" />
</head>
<body>
<h1> this is page1 with header from mainHeader.gsp template </h1>
</body>
</html>

обратите внимание на тех, кто когда-либо читал это: 1. имя файла с символом «_» 2. закрывающий тег body в "page1.gsp" закрывает тег body, начатый в файле "_mainHeader.gsp".

так что в основном этот шаблонный материал - своего рода копирование частей страниц gsp, и он отлично работает! спасибо за ваш ответ никогда!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...