Struts tag library

xiaoxiao2021-03-06  41

Struts tag library

4.Struts Tag Library

The Struts tag library used by JSP window components consists of four types of tags:

l bean tag: Manage Bean in JSP page

l Logic tag: Control flow in the JSP page

l HTML tag: Used to generate an HTML tag, display data in the form, program the URL using the session ID

l Template tag: Use dynamic template to construct a page of normal format

4.1 bean tag

This tag library contains tags for defining new beans, accessing beans, and its properties. The STRUTS framework provides a variety of custom tags to process JavaBean in the JSP page. These tags are packaged in a normal tag library, define its tag library descriptor in file struts-bean.tld. The bean tag library will define the tag in four subcategories:

l Create and copy the tag of bean

l Script variable definition tag

l bean translation mark

l Message Internationalization Mark

4.1.1 Bean Copy Mark

You can define a new bean, you can copy the existing bean, you can also replicate properties from the existing bean.

tag is used:

l Define new string constants

l Copy existing beans to new defined bean objects

l Copy the properties of the existing bean to create new beans

Tag properties:

Attributes

description

Id

The newly defined bean script variable name must be set

Type

Define classes to introduce script variables

Value

Assign a new object to the script variable defined by the id attribute

Name

The name of the target bean. If the value of the value is not set, this property must be set.

Property

Name property defines the property name of the bean, used to define new beans

Scope

The scope of the source bean. If there is no setting, the search range is from the page scope to the application scope

TOSCOPE

The role of the target bean. If there is no setting, the default value is a page scope

For example: Define a bean:

Source bean is copied in the page scope, the request scope is another bean:

Scope = "Page" Toscope = "request" />

4.1.2 Defining the tag of scripting variables

Define and generate script variables from multiple resources, including cookies, request parameters, HTTP headers, and more. The property is as follows:

Attributes

description

Id

Script variable and name of the page scope attribute to be defined

Name

Cookie / header / parameter name

Multiple

If this property sets any value, all matched cookies will accumulate and store them into a cookie [] (an array) type bean. If there is no setting, specifying the first value of the cookie will be used as the value of the cookie type.

Value

If there is no matching cookie or value, return the default value specified by this property.

E.g:

The script variable name is MyCookie, the name of the cookie for creating this property is UserName.

The script variable name is MyHeader, the name of the request header is accept-language.

The script variable name is MyPatameter, and the name of the request parameter it saves is also myParameter.

tag will retrieve a resource response and introduce a script variable and a string type page scope. This resource can be a page, an ActionForward or an external URL. Unlike , the resource response is stored in the bean of a page scope, not written to the output stream. The property is as follows:

Attributes

description

Id

Script variable and name of the page scope attribute to be defined

Page

An internal resource

Forward

ActionForward

HREF

Complete URL of the resource to be included

E.g:

The name of the script variable is MyInClude, and the response to retrieve is from the resource myjsp? X = 1.

Tag will retrieve resources in the web application and introduce a script variable and page scope attribute of the InputStream or string type. If a problem occurs while retrieving resources, an exception is generated. The property is as follows:

Attributes

description

Id

Script variable and name of the page scope attribute to be defined

Name

Resource relative path

INPUT

If this property does not exist, the type of resource is a string

E.g:

The name of the script variable is MyResource, the name of the resource to retrieve is MyResource.xml.

4.1.3 Displaying Bean Attributes

The tag is defined in the tag library to deliver the properties of the bean to the packaged JSP page write. This tag is similar to , the properties are as follows:

Attributes

description

Name

The name of the bean to be displayed

Property

The name of the attribute to display. If this attribute class has java.beans.propertyEditor, getastext () or TOSTRING method is called

Scope

BEAN's scope, if there is no setting, the search range is from the page to the application scope

Filter

If you set true, all special HTML characters in the properties will be converted to the corresponding entity reference

Ignore

If FALSE is set, a request time is abnormal when the property is found, otherwise returns NULL

E.g:

FILTER = "true" />

MyBean's property MyProperty will be displayed, the scope is a request, and if any HTML special characters are found, it will be converted to the corresponding entity reference.

4.1.4 Message markers and internationalization

The STRTUS framework supports internationalization and localization. Users define their own area in their computer, when the web application needs to output a message, it will reference a resource file, all messages in this file use the appropriate language. An application may provide a lot of resource files, each file provides messages written in different languages. If you do not find the resource file of the selected language, you will use the default resource file.

The Struts Framework supports internationalization uses the tag, and the support of these tasks to implement the Java2 platform using the Locale and ResourceBundle classes defined in the Java.util packet. Java.Text.MessageFormat class definitions can support messages. With this feature, developers do not need to understand the details of these classes to internationalize and set messages. Internationalization and localization with STRTUS:

The first step To define the name of the resource file, this file will contain all messages that will appear in the program with the default language. These messages are stored in the form of "keyword-value" as follows:

Error.validation.Location = The Entered Location Is Invalid

This file needs to be stored under the path of the class, and its path is to transmit to the ActionServlet as a parameter as a parameter, and the path format should comply with the standard naming specification for the full Java class. For example, if the resource file is stored in the web-inf / class directory, the file name is ApplicationResources.properties, then the parameter value that needs to be passed is ApplicationResources. If the file is in web-inf / classs / com / test, the parameter value should be com.test. ApplicationResources.

In order to achieve internationalization, all resource files must be stored in the directory where basic resource files are located. The basic resource file contains messages written in the local language in the default regional language - local language. If the name of the basic resource file is ApplicationResources.Properties, the name of the resource file written in other specific languages ​​should be ApplicationResources_xx.properties (xx is ISO code, such as English is en). So these files should contain the same keyword, but the value of the keyword is written in a particular language.

The area initialization parameters of the ActionServlet must be transmitted with a TRUE value so that ActionServlet stores a region object of a particular user computer under an action.locale_key keyword in the user session. You can now run an international Web site that automatically displays in accordance with the area on the user's computer.

We can also use a specific string to replace some messages, just like Java.Text.MessageFormat:

Error.invalid.number = the number {0} is valid

We can replace the string {0} to any number we need. Tag properties are as follows:

Attributes

description

Key

Define message keyword in the resource file

Locale

The property name of the area object stored in the user session. If no setting is set, the default is action.locale_key

Bundle

In the application context, the name of the properties of the resource object is stored. If this property is not set, the default value is action.Message_Key

arg0

First replacement parameter value

Arg1

Second replacement parameter value

Arg2

Third replacement parameter value

Arg3

Fourth replacement parameter value

For example: a message defined in the resource file:

Info.mykey = the number in {0}, {1}, {2}, {3}

We can use the following message tag:

This information mark output to the JSP page will be displayed as: The NumBers Entered Area 5, 6, 7, 8

4.2 Logical Tag Logic Library The tag can be used to process appearance logic without the need to use scripTlet. The Struts Logic Tag library contains tags that can be conditionally generated, looped in an object collection, repeatedly generating output text, and application process control. It also provides a set of tags that handle flow control in the JSP page. These tags are encapsulated in the file named Struts-Logic.TLD. The mark defined by the logical tag library can perform the following three functions:

l condition logic

l repeat

l Forward / redirect response

4.2.1 Conditional Logic

Struts has three types of conditional logic. The first category can compare the size of the following entities and a constant:

l cookie

l request parameters

L bean or bean parameters

l request header

This type of tag is listed below:

mark

Features

Returns true if the constant is equal to the defined entity

Returns true if the constant is not equal to the defined entity

Returns true if the constant is greater than or equal to the defined entity

Returns true if the constant is less than or equal to the defined entity

Returns true if the constant is less than the defined entity

Returns true if the constant is greater than the defined entity

All markers of this class have the same properties

Attributes

description

Value

To make a constant constant value

Cookie

The name of HTTP cookie to be compared

HEADER

The name of the HTTP request header to be compared

Parameter

The name of the HTTP request parameter to be compared

Name

If you want to compare the properties of the bean or bean, this property represents the name of the bean.

Property

The name of the BEAN attribute to be compared

Scope

BEAN's scope, if no scope is specified, its search range is from page to the application

E.g:

The entered name is someamename

The value of the request parameter named "Name" is "Somename".

The value of bean.prop is Greater Than 7

It is determined whether there is a bean named "bean" in the scope of the page, which has a PROP attribute, whether the value of this property is greater than 7. If this property can be converted to a value, the numerical comparison is performed, otherwise the string is compared.

The second type of condition tag defines two tags:

l

l

Their function is to determine if a specific item is present before calculating the marker. The attributes and attribute values ​​of the tag determine the item to be checked.

Attributes

description

Cookie

The cookie specified by this property will be checked.

HEADER

The request header specified by this property will be checked if

Parameter

The request parameter specified by this property will be checked if there is

Name

If the Property property is not set, then the bean specified by this property will be checked. If set, the bean and bean properties will be checked.

Property

Check if there is a specified property in the bean specified by the Name property SCOPE

If the name of the BEAN is specified, this is the scope of the bean. If you do not specify a scope, the search range is from the page to the application scope.

Role

Check if the currently confirmed user belongs to a special role

User

Check if the user currently confirmed has a specific name

E.g:

The Bean Property Bean.prop is present

The tag determines whether there is a bean named "bean" in the page scope, this bean has a PROP property.

The third type of condition mark is more complicated, and these markers check the contents of the mark according to the results of the template match. In other words, these tags determine if the value of a specified item is a substring of a particular constant:

l

l

These tags allow the JSP engine to calculate the marker main body when the matching or no discovery is found. The property is as follows:

Attributes

description

Cookie

The name of HTTP cookie to be compared

HEADER

The name of the HTTP header to be compared

Parameter

The name of the HTTP request parameter to be compared

Name

To compare the properties of the bean or bean, this property is the name of the user specifies the name.

Location

If the value of this property is set, you will match this specified location (index value).

Scope

If BEAN is compared, this property specifies the scope of the bean. If this parameter is not set, the search range is from the page to the application scope

Property

To make a comparative bean attribute name

Value

To make a constant constant value

E.g:

The parameter name is a sub-string of the string xyz from index 1

The mark checks if the request parameter named "name" is a sub-string of "XYZ", but the sub-string must start from the "XYZ" index position 1 (that is, the sub-string must be "y" or "yz" ).

4.2.2 Repeat marker

The tag is defined in the logical tag library, which can repeat the content of the marker according to the number of elements in a particular set. The type of collection can be java.util.iterator, java.util.collection

Java.util.map or an array. There are three ways to define this collection:

l Use the runtime expression to return a collection of attribute sets

l Define the collection as a bean and use the Name property to specify the name of the storage attribute.

l Use the Name property to define a bean and use the Property property to define a BEAN property that returns a collection.

The collection of current elements is defined as a bean of a page scope. The attributes are as follows, all of these properties use runtime expressions.

Attributes

description

COLLECTION

If there is no Name property set, it specifies a collection to be repeated.

Id

Page Scope BEAN and Script Variable Name, it saves the handle of current elements in the collection

Indexed

Page Scope JSP Bean Name, which contains the current index of the collection after repeated completion

Length

The maximum number of repetitions

Name

As the name of the collection, or a bean name, it is an attribute defined by the Property property, which is a collection OFFSET.

Repeat the index of the start position

Property

Name of the BEAN attribute as a collection

Scope

If the bean name is specified, this property sets the BEAN's scope. If there is no setting, search range from page to application scope

Type

Type for the currently defined page scope bean

E.g:

Collection = "<% = myList%>"

TYPE = "java.lang.integer"

OFFSET = "1"

Length = "2">

<% = currentint%>

The code will use the first element in the list to repeat two elements and allow the current element to use the script variable of the page scope and the Java.lang.integer type. That is, if MYLIST contains elements 1, 2, 3, 4, etc., the code will print 1 and 2.

4.2.3 Forwarding and Redirecting Tags

Forward mark

tag can forward the response to the redirect to a specific global ActionForward. The type of ActionForward determines whether to use the pageContext forward response or use SendRedirect to redirect the response. This marker has only one "name" property to specify the name of the global ActionForward, for example:

Redirect tag

tag is a powerful tool that can perform HTTP redirection. According to the specified different properties, it can achieve redirection in different ways. It also allows developers to specify query parameters for redirect URLs. The property is as follows:

Attributes

description

Forward

ActionForward mapped to the resource relative path

HREF

Complete URL of resources

Page

Resource relative path

Name

The name of the page name, request, session, or program property of the Map type, which contains the Name-Value parameter to be added to the Redirect URL (if the Property property is not set). Or a bean name with the MAP type attribute, which contain the same information (no provosty attribute)

Property

The name of the BEAN attribute of the MAP type. The name of the bean is specified by the Name property.

Scope

If the name of the bean is specified, this property specifies the range of the search bean. If there is no setting, search range from page to application scope

Paramid

Define the name of a specific query parameter

Paramname

The name of the BEAN of the string type, which contains the value of the query parameter (if the paramproperty property is not set); or a name of a bean, its properties (specified in the paramproperty property) contains the query parameter value

Paramproperty

The name of the string bean property contains the value of the query parameter

Paramscope

Paramname defined bean search range

At least one property in Forward, HREF, or PAGE is to be specified when using this tag to indicate which resource will be redirected.

4.3 HTML tag

The Struts HTML tag can be roughly divided into the following functions:

l Display form elements and input controls

l Display error message

l Display other HTML elements

4.3.1 Display Form Elements and Input Controls

Struts is closely linked with the HTML form with the ActionForm Bean defined for formal operations. The name of the form input field is corresponding to the attribute name defined in the ActionForm Bean. When the form is first displayed, the input field of the form is transplanted from the ActionForm Bean. When the form is submitted, the request parameter will be transplanted to the Actionform Bean instance. All the following properties can be used to define the JavaScript event processor using the following properties.

Attributes

description

Onblur

Field lost focus

ONCHANGE

The field lost the focus and the value was changed.

Onclick

Field is clicked by the mouse

Ondblclick

Field double-click by mouse

ONFOCUS

Field receiving input focus

OnkeyDown

Fields have focus and key presses

OnkeyPress

Fields have focus and have keys to press and release

ONKEYUP

Fields have focus and have keys to be released

OnMouseDown

Mouse pointer points to fields and click

OnMousemove

Mouse pointer points to fields and moves within the field

OnMouseout

The mouse pointer points to the control, but the pointer moves periphery element

OnMouseover

The mouse pointer does not point to the field, but the pointer moves inside the element.

OnMouseup

The mouse pointer points to the field and releases the mouse button

Other general properties that can be defined in

elements are:

Attributes

description

AccessKey

Define shortcuts for accessing input fields

Style

Define the style of the input field

STYLECLASS

Define style table classes for entering fields

TabINDEX

Enter the tab order of the field

Form mark

tag is used to display HTML tags, you can specify the name of the AcitonForm Bean and its class name. If these properties are not set, you need to have a configuration file to specify an actionMApping to indicate which JSP page currently entered, and the Bean name and class retrieved from the map. If you do not find the specified name in the scope specified by ActionMapping, you will create and store a new bean, otherwise the found bean will be used.

The tag can include a sub-tag corresponding to various HTML input fields.

tag properties are as follows:

Attributes

description

Action

Operation with a form. In the configuration, this operation is also used to identify an actionform bean associated with a form.

ENCTYPE

Code type of form HTTP method

FOCUS

Fields that need to initialize focus in the form

Method

HTTP method used in form

Name

The name of the Actionform Bean associated with the form. If this property is not set, the name of the bean will get from the configuration information.

OnReset

JavaScript event handle when forming a form

OnSubmit

JavaScript event handle when the form is submitted

Scope

Search for the range of Actionform Beans. If there is no setting, it will be obtained from the configuration file.

Style

Use format

STYLECLASS

Format form class for this element

Type

The full name of the Actionform Bean. If there is no setting, it will be obtained from the configuration file.

E.g:

The operation path associated with the form is ValidateEmployee, and the form data is passed through POST. For this form, additional information, such as the bean name type, the scope of the scope, is retrieved from the form specified by the form:

TYPE = "com.example.validateexample"

Name = "Empform"

Scope = "request"

Input = "/ employeeinput.jsp">

If the configuration file contains the above information, and requesting the URI * .do is mapped to the ActionServlet, the name, type, and scope of action-related Actionform Beans are Empform, Com.example.employeform, request. These properties can also be used. Tag properties are defined.

The following tags must be nested in the tag

Button and cancellation

tag Displays a button control; tag Displays a cancel button. The property is as follows:

Attributes

description

Property

The name of the request parameter that defines the request parameter returned to the server when the form is submitted

Value

Tag on the button

Reset and submission tag

and tags can display HTML reset buttons and submitting buttons.

Text and text zone tag

and Tags respectively HTML text boxes and text areas, the properties are as follows:

Attributes

description

Property

Definition When the form is submitted, the name of the request parameter is sent back to the server, or the attribute name of the BEAN used to determine the current value of the text element.

Name

The attribute is queried by the name of the BEAN, which determines the value of the text box and the text area. If there is no setting, the name of the ActionForm associated with this embedded form is used.

Tag also has the following properties:

Attributes

description

Maxlength

Maximum number of characters capable enabled

Size

The size of the text box (number of characters)

Mark a unique property is as follows:

Attributes

description

Rows

Number of lines in the text area

COLS

The number of columns in the text area

Check box and check box tag

Tags can display check box controls. Tags You can display the HTML checkbox control, request the object to get the getParameterValues ​​() call used when passing the check box name will return a string array. The property is as follows:

Attributes

description

Name

The name of the bean, its property is used to determine if the check is displayed in the selected state. If there is no setting, the name of the ActionFrom Bean associated with this embedded form will be used.

Property

The name of the check box is also the bean property name that determines if the check box is displayed in the selected status. In the case of the check box, this property must be an array.

Value

When the check box is selected, the value of the request parameter returned to the server

E.g:

A checkbox called Married, returns a "y" when the form is submitted.

File tag

tag can display HTML file controls. The property is as follows: attribute

description

Name

The name of the bean, its properties will determine the content displayed in the file control. If not set, the name of the ACTIONFORM BEAN associated with the embedded form will be used.

Property

This attribute defines the name of the request parameter sent back to the server when the form is submitted, and the bean property name used to determine the display content in the file control.

ACCEPT

The content type set of the server can handle. It will also filter the optional file type in the Customer Browser dialog.

Value

The tag on the button, this button can browse the file in the local file system

Single button tag

tag is used to display the HTML radical button control, the property is as follows:

Attributes

description

Name

The name of the bean, its property is used to determine if the radio button is displayed in the selected status. If there is no setting, the name of the ActionFrom Bean associated with this embedded form will be used.

Property

When the form is submitted back to the name of the request parameter of the server, and the name of the bean property used to determine whether the radio button is displayed in the selected state

Value

When the radio button is selected, return to the value of the server

Hidden tag

Attributes

description

Name

The name of the bean, its property is used to determine the current value of hidden elements. If there is no setting, the name of the ActionFrom Bean associated with this embedded form will be used.

Property

Define the name of the request parameter sent back to the server when the form is submitted, and the name of the bean property used to determine the current value of the hidden element

Value

Use to initialize the value hidden input elements

Password mark

tag can display the HTML password control, the properties are as follows:

Attributes

description

Maxlength

Maximum number of characters capable enabled

Name

The name of the bean, its attribute will be used to determine the current value of the password element. If there is no setting, the name of the ActionFrom Bean associated with this embedded form will be used.

Property

Defines the name of the request parameter sent back to the server when the form is submitted, and the name of the bean property used to determine the current value of the password element

REDISPLAY

When this field is displayed, if the corresponding bean property has been set, this property determines whether the content displaying the password.

Size

Size of field

Select tag

tag can display HTML selection controls, the properties are as follows:

Attributes

description

Multiple

Indicates whether this selection control allows multiple elections

Name

The name of the bean is determined which one is determined. If there is no setting, the name of the ActionFrom Bean associated with this embedded form will be used.

Property

Define the name of the request parameter sent back to the server when the form is submitted, and the name of the bean property used to determine which option needs to be selected

Size

Number of options that can be displayed at the same time

Value

Used to indicate the options that need to be selected

Option tag (this element needs to be nested in tag)

Tag Use to display the HTML option element collection, the properties are as follows:

Attributes

description

COLLECTION

The name of the bean collection is stored in the properties of a scope. The number of options is the same as the number of elements in the collection. The Property property can define the bean properties used by the option value, and the LabelProperty property defines the properties of the bean used by the option mark.

Labelname

The bean used to specify a role domain, this bean is a collection of strings, which can define the marks of the element (if the flag is not the same) LabelProperty

When using the Collection property, it is used to define the bean stored in a scope. This bean will return a string collection that can be used to write the value attribute of element.

Name

If this is the only specified property, it defines the bean stored in a scope. This bean will return a string collection that can be used to write the value attribute of element.

Property

This property defines the NAME properties of each independent bean to display the option value when using the Collection property. If it is not used together with the Collection property, this property defines the property name (if there is a Name property) specified by the Name property, or defines an actionform bean, this bean will return a collection to write an option value.

Let's take a look at some examples of this tag:

Labelproperty = "optionLabel" />

The tag assumes that there is a collection of optioncollection in a scope that contains some independent beans with optionValue properties, each with the value of an option. The flag of each option is defined by the BEAN's OptionLabel property property.

OptionValues ​​represents a bean stored in a scope, it is a string collection that can be used to write an option value, while OptionLabels represents a bean stored in a scope, it is also a string A collection that can be used to write an option sign.

4.3.2 Display the mark of the error message

tag can be combined with ActionerRORS to display the error message. This tag first reads the message key ERRORS.HEADER from the resource file of the current area, and then displays the text of the message. Next it will cycle in the ActionerRRORS object (usually as a request parameter in the action.error_key keyword), read the message keyword of a single ActionError object, read and format the corresponding message from the resource file of the current area. And display them. It then reads the message corresponding to the ErrorS.footer keyword and is displayed.

By defining the Property property to filter the message to display, the value of this attribute should correspond to the keyword of the ActionError object in the ActionerRROR object. The property is as follows:

Attributes

description

Bundle

Represents the name of the application scope attribute, which contains message resources, its default value acion.Message_Key

Locale

Represents the name of the session scope attribute, which stores the area information of the user's current login. Its default is Action.Error_Key

Name

Indicates the name of the request attribute, which stores an ActionerRors object. Its default is Action.Error_Key

Property

This property specifies the keywords for storing each individual ActionError object in the ActionerRors object, which can be filtered

example:

Display all errors in the collection.

Displays errors stored in miss.name keywords.

4.3.3 Other HTML tags

The Struts HTML tag also defines the following tags to display other HTML elements:

l : Show HTML elements

l : Display image tag

l : Display HTML link or anchor

l : Create a URI without an anchor tag

For details of these tags, please refer to the Struts documentation.

4.4 Template tag

The dynamic template is a powerful means of modular web page layout design. The Struts Template Tag Library defines custom tags to implement dynamic templates.

Insert tag

Tags can insert a dynamic template in the application's JSP page. This tag has only one template property that defines a template JSP page. To insert a page of the template, there are multiple tags to specify, and these tags are defined as the main content of the tag.

Placement mark

tag is the tag internal use to specify the resource inserted into the template. The property is as follows:

Attributes

description

Content

Define what you want to insert, such as a JSP file or an HTML file

Direct

If this is set to true, the content specified by the Content property will be displayed directly on JSP instead of being included.

Name

The name of the content to be inserted

Role

If this property is set, the content can be performed only when the current legitimate user has a specific role.

Get marker

Use the tag to retrieve the resources to the JSP page by the tag in the template JSP page. The property is as follows:

Attributes

description

Name

The name of the content inserted by tag

Role

If this property is set, the content can be performed only when the current legitimate user has a specific role.

Use template tag

First write a template JSP page, it will be used by all web pages:

<% @ Taglib Uri = "/ Template" prefix = "template"%>

</ title></p> <p></ hEAD></p> <p><body></p> <p><Table Width = "100%" Height = "100%"></p> <p><tr height = "10%"></p> <p><TD></p> <p><Template: get name = "header" /></p> <p></ td></p> <p></ TR></p> <p><tr height = "80%"></p> <p><TD></p> <p><Template: get name = "content" /></p> <p></ td></p> <p></ TR></p> <p><tr height = "10%"></p> <p><TD></p> <p><Template: get name = "footer" /></p> <p></ td></p> <p></ TR></p> <p></ TABLE></p> <p></ body></p> <p></ html></p> <p>We name this file template.jsp. This file uses the <template: Get> tag to get the content provided by the JSP page using the <template: Put> tag, and display the content in an HTML table. These three contents are headings, contents and footers. Typical content JSP will be like this: <% @ Taglib URI = "/ Template" prefix = "/ template"%></p> <p><template: INSERT TEMPLATE = "Template.JSP"></p> <p><Template: put name = "header" content = "header.html" /></p> <p><template: put name = "content" Content = "Employeelist.jsp" /></p> <p><template: put name = "footer" Content = "footer.html" /></p> <p></ template: insert></p> <p>This application JSP page uses the <template: INSERT tag to define templates, then use the <template: PUT> tag to place the resource specified by the specific content name into the template JSP page. If we have the same page of hundreds of layout, but suddenly want to change this template, we only need to change the template.jsp file.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-57509.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="57509" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.033</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'mSsa3wYWwO3f6lDWGf2nGKgbn7ZKpw38Wx9YbUJlsGzAteTAi3QCgYeUIO7soTJjDq6uHT_2FZdjb_2BzVf4T4jrBA_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>