Dhiraj,

I think you have an incorrect understanding of tiles.  Using your
information, you should probably setup a main template with your 3 pieces
(header, menubar, and copyright) PLUS the "body-content" one.  That way, you
can make a tile that extends that template and simply overrides the
body-content portion.  Like this example tiles template layout:

<!-- default template/layout -->
<!-- note: the page you list as body-content doesn't need to be a jsp
   but can be an html file or a text file -->
<definition name="appln.default" path="/ApplnDefaultLayout.jsp">
        <put name="header" value="Menu.jsp"/>
        <put name="menubar" value="Menu.jsp"/>
        <put name="copyright" value="copyright.jsp"/>
        <put name="body-content" value=""/>
</definition>

<!-- A page for an action uses the appln.default definition/layout/template
        It overrides the appln.default field "body-content" and forces
        it to display "/index.jsp" instead of whatever was specified
        in the appln.default definition/layout/template-->

<definition name="appln.tilesTest" extends "appln.default">
        <put name="body-content" value="/index.jsp"/>
</definition>

<!-- Another page layout using the appln.default
        template and overriding "body-content" to show another page-->

<definition name="appln.tilesSecondTest" extends "appln.default">
        <put name="body-content" value="/somepage.jsp"/>
</definition>


Then, your /ApplnDefaultLayout.jsp might be (simple layout example):

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<!-- add any html and put the tiles:insert statements wherever you choose
   This simply lists them in order -->
<tiles:insert name="header"/>
<tiles:insert name="menubar"/>
<tiles:insert name="body-content"/>
<tiles:insert name="copyright"/>


In your action, set the path of your forward to be a tiles definition:
"appln.tilesTest", "appln.tilesSecondTest" or even "appln.default" (instead
of specifying an html page or a JSP as the forward's path="SOMETHING"
parameter.

Now, about your tiles:insert statements.  Tiles is essentially a 4th scope
like the 3 normal ones: request, session, or application.  There is no need
to specify the tiles definition name as it is not a bean and wouldn't work
(and in your example, it doesn't.  The beanName attribute is for inserting a
bean's property (beanName and beanProperty should go together, that and the
fact you didn't create a real bean named "appln.tilestTest" explains your
jasper error message) in your template.  That way, you can populate the bean
with data of your choosing (random or specific) and it is one way of
displaying dynamic content.

I hope this explanation helped you with your tiles issues.

Regards,
David

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
Sent: Monday, December 22, 2003 11:58 PM
To: [EMAIL PROTECTED]
Subject: Tiles Problem!!!


I am trying out 'Declaring definition in a configuration file'

I have added below lines in struts-config.xml

  <plug-in className="org.apache.struts.tiles.TilesPlugIn">
    <set-property property="definitions-config"
value="/WEB-INF/tiles-practice-defs.xml"/>
    <set-property property="definitions-debug" value="2"/>
    <set-property property="definitions-parser-details" value="2"/>
    <set-property property="definitions-parser-validate" value="true"/>
    <set-property property="moduleAware" value="true" />
  </plug-in>


Below are the contents of tiles-practice-defs.xml, which I have placed
in WEB-INF folder:

<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config.dtd";>

<tiles-definitions>
        <definition name="appln.default" path="/ApplnDefaultLayout.jsp">
                <put name="header" value="Menu.jsp"/>
                <put name="menubar" value="Menu.jsp"/>
                <put name="copyright" value="copyright.jsp"/>
        </definition>
</tiles-definitions>


Below are the contents of the TilesDefsTest.jsp page:


<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<tiles:insert beanName="appln.default" beanScope="request">
        <tiles:put name="body-content" value="/index.jsp"/>
</tiles:insert>


I get following error:

org.apache.jasper.JasperException: Error - Tag Insert : No value defined
for bean 'appln.default' with property 'null' in scope 'request'.

I am using Tomcat 4.1.27 with Struts 1.1

Regards

Dhiraj



DISCLAIMER:
This message contains privileged and confidential information and is
intended only for the individual named.If you are not the intended recipient
you should not disseminate,distribute,store,print, copy or deliver this
message.Please notify the sender immediately by e-mail if you have received
this e-mail by mistake and delete this e-mail from your system.E-mail
transmission cannot be guaranteed to be secure or error-free as information
could be intercepted,corrupted,lost,destroyed,arrive late or incomplete or
contain viruses.The sender therefore does not accept liability for any
errors or omissions in the contents of this message which arise as a result
of e-mail transmission. If verification is required please request a
hard-copy version.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to