Hello Anh,
In the template page, you have to write something like :
---
frameset rows="73, *, 73"
frame src="%=request.getContextPath()%template:get name="header" /"
name="header"
frame src="%=request.getContextPath()%template:get name="body" /"
name="body"
frame src="%=request.getContextPath()%template:get name="footer" /"
name="footer"
/frameset
--
The scriplet %=request.getContextPath()% is not mandatory, but it allows to
put relative URL rather than absolute URL in the insert tag. Thus, your page are
portable on different sites.
Your insert tag looks like :
--
template:insert template="/basic/myFramesetLayout.jsp"
template:put name="title" content="My first page"
direct="true" /
template:put name="header" content="/common/header.jsp" direct="true"/
template:put name="footer" content="/common/footer.jsp" direct="true"/
template:put name="body" content="/basic/helloBody.jsp" direct="true"/
/template:insert
-
Don't forget direct="true" ! This instruct to output the string as is, rather
than trying to include a jsp page.
Cedric
"Hoang, Anh" wrote:
Hello all,
In the template tag example, the template file used the table and table row
to indicate where in the layout to insert the content. Is there a way to
build the template file using frame instead of table? How do you specify the
src so that it will take template:get name="anything"/ to be the file to
be displayed in the frame? In other world, how do you change the following
code:
%@ taglib uri="/struts-template.tld" prefix="template" %
%-- Layout component
parameters : title, header, menu, body, footer
--%
HEAD
titletemplate:get name="title"//title
/HEAD
body
table
tr
td valign="top"template:get name="header"//td
/tr
tr
td width="25%" valign="top"template:get name='menu'//td
td colspan="100%"
table template:get name="main" / /table
/td
/tr
tr
td colspan="2"
template:get name="footer" /
/td
/tr
/table
To this code:
%@ taglib uri="/struts-template.tld" prefix="template" %
%-- Frameset Layout component
parameters : title, header, menu, body, footer
--%
html
head
titletemplate:get name="title"//title
/head
frameset rows="16%,*" cols="19%,*"
frame name="logoFrame" src="Logo.gif" marginwidth="5" marginheight="5"
scrolling="no" border="0" frameborder="no" noresize
frame name="headerFrame" src="" marginwidth="5" marginheight="5"
scrolling="no" border="0" frameborder="no" noresize
frame name="menuFrame" src="" marginwidth="0" marginheight="5"
scrolling="auto" border="0" frameborder="no" noresize
frameset rows="84%,*"
frame name="mainFrame" src="" marginwidth="5" marginheight="5"
scrolling="auto" border="0" frameborder="no" noresize
frame name="footerFrame" src="" marginwidth="5" marginheight="5"
scrolling="no" border="0" frameborder="no" noresize
/frameset
/frameset
/html
I tried to put src="template:get name='header'/" but it didn't work.
Is it possible of using frame with template or table and row are the only
choices? Thank you very much for your help.