Programming Jakarta Struts, 2nd Edition [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Programming Jakarta Struts, 2nd Edition [Electronic resources] - نسخه متنی

Chuck Cavaness

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید








14.4 The Tiles Tag Library


This section introduces the JSP custom
tags used by the Tiles framework. Table 14-1 lists
the tags available to the framework. The tags are very similar to the
ones provided in any template-based framework, but with more
functionality.

Table 14-1. Tags within the Tiles tag library

Tag name


Description


add


Add an element to the surrounding list.


definition


Create a tile component definition.


get


Get the content from request scope that was put there by a
put tag.


getAsString


Render the value of the specified tile/component/template attribute
to the current JspWriter.


importAttribute


Import a tile's attribute into the specified context.


initComponentDefinitions


Initialize a tile definitions factory.


insert


Insert a tiles component.


put


Put an attribute into a tile context.


putList


Declare a list that will be passed as an attribute.


useAttribute


Use an attribute value inside a page.


14.4.1 The insert Tag


The insert
tag is responsible for inserting content into a page. In a layout
tile, the insert tag prescribes where the content
will go using attribute values. In a regular, non-layout tile, the
insert tag is used to retrieve a layout and allow
content to be passed to the layout using put tags.
Table 14-2 lists the attributes for the
insert tag.

Table 14-2. Attributes for the insert tag

Attribute name


Description


attribute


The name of an attribute in the current tile/component context. The
value of this attribute is passed to the name
attribute.


beanName


The name of the bean used as a value. The bean is retrieved from the
specified context, if any. Otherwise, the
pageContext.findAttribute() method is used. If
the beanProperty attribute is also specified,
retrieve the value from the corresponding bean property.

If the bean (or bean property value) is an instance of one of the
Attribute classes (Direct,
Instance, etc.), the insertion is done according
to the class type. Otherwise, the toString()
method is called on the bean, and the returned
String is passed to the name
attribute.


beanProperty


The name of the bean property. If specified, the value is retrieved
from this property.


beanScope


The context scope the bean can be found within. If not specified, the
pageContext. findAttribute(
)
method is used. The scope can be any JSP scope, component,
or template. In the two latter cases, the bean is searched in the
tile/component/template context.


component


A string representing the URI of a tile or template. The
template, page, and
component attributes have exactly the same
behavior.


controllerUrl


The URL of a controller called immediately before the page is
inserted. The URL usually denotes a Struts action. The controller
(action) is used to prepare data to be rendered by the inserted tile.

Only one of controllerUrl or
controllerClass should be used.


controllerClass


The class type of a controller called immediately before the page is
inserted. The controller is used to prepare data to be rendered by
the inserted tile.

Only one of controllerUrl or
controllerClass should be used. The class must
implement or extend one of the following:
org.apache.struts.tiles. Controller,
org.apache.struts.tiles.ControllerSupport, or
org.apache.struts.action.Action.


definition


The name of the definition to insert. Definitions are defined in a
centralized file. For now, only definitions from a factory can be
inserted with this attribute. To insert a definition defined with the
definition tag, use
beanName="".


flush


true or false. If
true, the current page output stream is flushed
before tile insertion.


ignore


If this attribute is set to true and the attribute
specified by the name does not exist, simply
return without writing anything. The default value is
false, which will cause a runtime exception to be
thrown.


name


The name of an entity to insert. The search is done in this order:
definition, attribute, then
page.


page


A string representing the URI of a tile or template. The
template, page, and
component attributes have exactly the same
behavior.


role


If the user is in the specified role, the tag is taken into account;
otherwise, the tag is skipped and the content is not written out.


template


A string representing the URI of a tile or template. The
template, page, and
component attributes have exactly the same
behavior.

Several examples of the insert tag were shown
earlier in this chapter.


14.4.2 The definition Tag


The definition tag is
used to create a tile (template) definition as a bean. The newly
created bean will be saved under the specified id,
in the requested scope. The
definition tag has the same syntax as the
insert tag. The new definition can extend a
definition described in the definition factory (XML file) and may
overload any previously defined parameters. Table 14-3 lists the attributes supported by the
definition tag.

Table 14-3. Attributes for the definition tag

Attribute name


Description


extends


The name of a parent definition that is used to initialize this new
definition.The parent definition is searched in the definitions
factory.


id


The name under which the newly created definition bean will be saved.
This attribute is required.


page


URL of the template/component to insert. Same as
template.


role


The role to check before inserting this definition. If the role is
not defined for the current user, the definition is not inserted.
Checking is done at insertion time, not during the definition
process.


scope


The variable scope in which the newly defined bean will be created.
If not specified, the bean will be created in page scope.


template


A string representing the URL of a tile/component/template (a JSP
page).

The following fragment illustrates how to use the
definition tag in a JSP page:

<tiles:definition 
id="storefront.default"
page="/layouts/storefrontDefaultLayout.jsp"
scope="request">
<tiles:put name="header" value="/common/header.jsp" />
<tiles:put name="menubar" value="/common/menubar.jsp" />
<tiles:put name="copyright" value="/common/copyright.jsp" />
</tiles:definition>

A complete example is shown later, in Section 14.5.1 of
this chapter.


14.4.3 The put Tag


The put tag
is used to pass attributes to a tile component. This tag can be used
only inside the insert or
definition tags. The value (or content) of the
put tag is specified using the
value attribute or the tag body. It is also
possible to specify the type of the value:

string


Content is literally translated.


page or template


Content is included from specified URL.


definition


Content comes from specified definition (from factory). Name is used
as definition name.



If the type attribute is used, it is taken into
account by the get or insert
tags inside the inserted tile. If the type
attribute is not specified, the content is untyped, unless it comes
from a typed bean.


Setting direct="true" is equivalent to setting
type="string".

Table 14-4 lists the attributes for the
put tag.

Table 14-4. Attributes for the put tag

Attribute name


Description


beanName


The name of the bean used to retrieve the value. The bean is
retrieved from the specified context, if any. Otherwise, the
pageContext.findAttribute()method is used. If
beanProperty is specified, retrieve the value from
the corresponding bean property.


beanProperty


The property name in the bean. If specified, the value is retrieved
from this property.


beanScope


The scope used to search for the bean. If not specified, the
pageContext. findAttribute() method is used. The
scope can be any JSP scope, "tile",
"component", or
"template". In the three later
cases, the bean is searched in the tile/component/template context.


content


Content that's put into tile scope. This attribute
is equivalent to the value attribute and was added
for compatibility with the JSP template tags.


direct


How the content is handled: true means content is
printed directly; false means content is included.
false is the default. This is another way to
specify content type. If direct="true", content is
"string"; if
direct="false", content is
"page". This attribute was added
for compatibility with the JSP template tags.


name


The name of the attribute.


role


If the user is in the specified role, the tag is taken into account.
Otherwise, the tag is skipped and the content is not written out.


type


The content type. Valid values are
"string",
"page",
"template", or
"definition".


value


The attribute valuecan be a String or an
Object. The value can come from a direct
assignment (value="aValue") or from a bean. One of
value, content, or
beanName must be present.


14.4.4 The putList Tag


The putList
tag creates a list that will be passed as an attribute to a tile. The
list elements are added using the add tag. This
tag can be used only inside the insert or
definition tag. Table 14-5 lists
the attribute for the putList tag.

Table 14-5. Attribute for the putList tag

Attribute name


Description


name


The name of the List. This attribute is required.


14.4.5 The add Tag


The add tag
adds an element to the surrounding list. This tag can be used only
inside the putList tag. The value can come from a
direct assignment (value="aValue") or from a bean.
One of value or beanName must
be specified. Table 14-6 lists the attributes for
the add tag.

Table 14-6. Attributes for the add tag

Attribute name


Description


beanName


The name of the bean used to retrieve the value. The bean is
retrieved from the specified context, if any. Otherwise, the
pageContext.findAttribute() method is used. If
beanProperty is specified, retrieve the value from
the corresponding bean property.


beanProperty


The bean property name. If specified, the value is retrieved from
this property.


beanScope


The scope used to search for the bean. If not specified, the
pageContext. findAttribute() method is used. The
scope can be any JSP scope,
"component", or
"template". In the two latter
cases, the bean is searched in the tile/component/template context.


content


The value is the same as the value attribute. This
attribute was added for compatibility with the JSP template tags.


direct


How the content is handled: true means content is
printed directly; false means content is included.
false is the default.


role


If the user is in the specified role, the tag is taken into account;
otherwise, the tag is ignored (skipped). The role
isn't taken into account if the
add tag is used in a definition.


type


The content type: "string",
"page",
"template", or
"definition". If the
type attribute is not specified, content is
untyped, unless it comes from a typed bean.


value


The value to be added. Can be a String or
Object.


14.4.6 The get Tag


The get tag
retrieves content from the tile context and includes it in the page.
Table 14-7 lists the attributes for the
get tag.

Table 14-7. Attributes for the get tag

Attribute name


Description


flush


true or false. If
true, the current page output stream is flushed
before tile insertion.


ignore


If this attribute is set to true and the attribute
specified by the name does not exist, simply return without writing
anything. The default value is false, which will
cause a runtime exception to be thrown.


name


The name of the content to get from the tile scope. This attribute is
required.


role


If the user is in the specified role, the tag is taken into account;
otherwise, the tag is ignored.


14.4.7 The getAsString Tag


The getAsString tag
retrieves the value of the specified tile attribute property and
renders it to the current JspWriter as a
String. The usual toString()
conversion is applied to the value. If the named value is not found,
a JSPException will be thrown. Table 14-8 lists the attributes for the
getAsString tag.

Table 14-8. Attributes for the getAsString tag

Attribute name


Description


ignore


If this attribute is set to true and the attribute
specified by the name does not exist, simply return without writing
anything. The default value is false, which will
cause a runtime exception to be thrown.


name


The attribute name. This attribute is required.


role


If the user is in the specified role, the tag is taken into account;
otherwise, the tag is ignored.


14.4.8 The useAttribute Tag


The useAttribute tag
declares a Java variable and an attribute in the specified scope,
using the tile's attribute value. The variable and
attribute will have the name specified by id, or
the original name if not specified. Table 14-9
lists the attributes for the useAttribute tag.

Table 14-9. Attributes for the useAttribute tag

Attribute name


Description


classname


The class of the declared variable.


id


The declared attribute and variable name.


ignore


If this attribute is set to true and the attribute
specified by the name does not exist, simply return without error.
The default value is false, which will cause a
runtime exception to be thrown.


name


The tile's attribute name. This attribute is
required.


scope


The scope of the declared attribute. Defaults to
"page".


14.4.9 The importAttribute Tag


The importAttribute tag
imports the attribute from the tile to the requested scope. The
name and scope attributes are
optional. If not specified, all tile attributes are imported in page
scope. Once imported, an attribute can be used like any other bean
from the JSP context. Table 14-10 lists the
attributes for the importAttribute tag.

Table 14-10. Attributes for the importAttribute tag

Attribute name


Description


ignore


If this attribute is set to true and the attribute
specified by the name does not exist, simply return without error.
The default value is false, which will cause a
runtime exception to be thrown.


name


The tile's attribute name. If not specified, all
attributes are imported.


scope


The scope into which the attribute is imported. Defaults to
"page".


14.4.10 The initComponentDefinitions Tag


The
initComponentDefinitions
tag initializes the definitions factory. Table 14-11
lists the attributes for the tag.

Table 14-11. Attributes for the initComponentDefinitions tag

Attribute name


Description


classname


If specified, the classname attribute of the
factory to create and initialize.


file


The definition file's name. This attribute is
required.


    / 181