导读:

JSP Struts HTML 标签库详解

Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。

标签库 说明

HTML 标签 用来创建能够和 Struts 框架和其他相应的 HTML 标签交互的 HTML 输入表单

Bean 标签 在访问 JavaBeans 及其属性,以及定义一个新的 bean 时使用

Logic 标签 管理条件产生的输出和对象集产生的循环

Template 标签 随着 Tiles 框架包的出现,此标记已开始减少使用

Nested 标签 增强对其他的 Struts 标签的嵌套使用的能力

标签的公共特征

使用固定属性名称的Struts 标签:

属性 说明

id 命名自定义标签创建时的脚本变量名。

name 指出关键字值,在该关键字下可以找到一个存在的 bean 。如果给出了 scope 属性,则仅仅在 scope 中查找。否则,根据标准的顺序在各种 scope 中查找: (page, request, session, or application) 。

property 指出 bean 中的某个属性,可以在其中检索值。如果没有标明,则使用对象本身的值。

scope 定义了 Bean 在哪个范围 (page, request, session, or application) 中被查找。如果没有标明按顺序查找。脚本变量 ( 见 id) 将在相同的范围中创建。

Struts 标签也支持嵌套引用,例如:

Property="foo.bar.baz"这相当于进行下面的调用:getFoo().getBar().getBaz();

或者做为setter:getFoo().getBar().setBaz(value);

虽然Struts 标签的设计原意是为了避免使用scriptlet,scriptlet的表达式还能够提供给所有的Struts 标签使用。但请确保使用完整的表达式:

错误: /index.jsp>'>

正确: '> // 表达式必须提供整个属性值

Html 标签库

1. 标签

它有两个属性:locale和xhtml,两者都不是必需的。

此行代码解析后:

2. 说明:生成的结果取决于Struts应用程序所位于的服务器的locale。如果你将应用程序部署到一个不同locale的服务器,你不需要改变代码,Locale会自动调整。

3. 标签:表示所包含页面的绝对位置。这个标签只有内嵌在head标签中才有效。

此行代码解析后:

4. 标签

最重要的属性page:图象文件的路径,前面必须带有一个斜线。

其它属性:heignt、width、alt。

5. />标签

Click demo

此行代码解析后: Click demo

6. 标签:通过一个简单的 标签,你就可以在一个JSP页面上显示完全自定义的错误信息。功能超强大!!

说明:这个标签在Request对象的属性集合中查找reserved key。如果它找到一个reserved key,它就假设这个key是一个String、或是一个String数组

(它包含在模块的MessageResources中查找的message keys)、或是类型为org.apache.struts.action.ActionErrors的一个对象。 如果在应用程序资源中存在相应的信息,那么就可以用下面这些可选的message keys:

errors.header or errors.prefix:相应的信息在错误信息的单独列表前显示。

errors.footer or errors.suffix:相应的信息在错误信息的单独列表后显示。

7. 标签系列

使用标签时必须遵循一些规则:

1. 标签中必须包含一个action属性,它是这个标签中唯一必需的属性。如果不具备该属性则JSP页面会抛出一个异常。之后你必须给这个action属性指定一个有效值。一个有效值是指应用程序的Struts配置文件中元素里的任何一个子元素的访问路径。而且相应的元素中必须有一个name属性,它的值是form bean的名称。

如果你有上述一个标签 ,那么你的Struts配置文件的元素中必须有一个如下显示为粗体的元素:

// 这就是说一个form标签是和form bean相关联的。

2.

3. 任何包含在 中用来接收用户输入的标签( 、 、 、 、<radio>、<checkbox>、<select>)必须在相关的form bean中有一个指定的属性值。比如,如果你有一个属性值被指定为“username”的<text>标签,那么相关的form bean中也必须有一个名为“username”的属性。输入<text>标签中的值会被用于生成form bean的userName属性。 <br><br> <br><form>标签还有一些不是必须但很有用的“次要”属性。 <br><br> <br>比如,你可以用focus属性来生成JavaScript,它会“定焦”(focus)到该form所包含的一个元素上。使用focus属性时你需要给它指定元素的名称。 <br><br> <br>        <body> <br><br> <br>        <html:form action=/"/login/" focus=/"password/"> <br><br> <br>        User Name: <html:text property=/"userName/"/> <br><br> <br>        <br>Password: <html:text property=/"password/"/> <br><br> <br>        <br><html:submit/> <br><br> <br>        </html:form> <br><br> <br>        </body> <br><br> <br>        代码解析后: <body> <br><br> <br>        <form name=/"loginForm/" method=/"post/" action=/"/myStrutsApp/login.do/"> <br><br> <br>        User Name: <input type=/"text/" name=/"userName/" value=/"/"> <br><br> <br>        <br>Password: <input type=/"text/" name=/"password/" value=/"/"> <br><br> <br>        <br><input type=/"submit/" value=/"Submit/"> <br><br> <br>        </form> <br><br> <br>        <script language=/"JavaScript/" type=/"text/javascript/"> <br><br> <br>        <!-- <br><br > <br>        if (document.forms[/"loginForm/"].elements[/"password/"].type != /"hidden/") <br><br > <br>        document.forms[/"loginForm/"].elements[/"password/"].focus() <br><br > <br>        // --> <br><br > <br>        </script> <br><br > <br>        </body> <br><br > <br>有没有看到这个标签库是如何建立JavaScript来定焦到password元素上的? 这也是该库让人着迷的地方之一。你不用担心如何在客户端进行编程,它会帮你自动生成。 <br><br > <br>还可以看到,<form>标签中method属性的缺省值是POST。<text>标签、<hidden>标签、<textarea>标签、<radio>标签、<checkbox>标签、<submit>标签、<reset>标签: <br><br > <br>都有一个property属性,最后会被转换成HTML中的name属性,当然还有name和value属性。<password>标签 <br><br > <br>        <html:password property=/"password/" redisplay=/"false/"/> <br><br > <br>该标签中的一个很重要的属性是"redisplay",它用于重新显示以前输入到这个区域中的值。该属性的缺省值为true。然而,为了使password不能被重新显示,你或许希望将该属性的值设为false。<select>标签和<option>标签: <br><br > <br>        <html:select property=/"color/" size=/"3/"> <br><br > <br>        <html:option value=/"r/">red</html:option> <br><br > <br>        <html:option value= /"g/">green</html:option> <br><br > <br>        <html:option value= /"b/">blue</html:option> <br><br > <br>        </html:select> <br><br > <br><b >遗补</strong >:1.)<html:link>标签 <br><br > <br>forward属性:链接到一个global forward上;action属性:链接到一个action mapping上;href属性:这个链接会转发给控制器,由控制器做决定;page属性:一个相对的链接。 <br><br > <br>用page属性链接到action上: <br><br > <br>        <html:link page="/html-link.do"> <br><br > <br>        Linking with the page attribute. <br><br > <br>        </html:link> <br><br > <br>注意,上面的代码中你不必指定web的关联。相反的,如果你使用href属性,你就必须像下面所示指出web的关联(这里的关联就是struts-exercise): <br><br > <br>        <html:link href="/struts-exercise-taglib/html-link.do"> <br><br > <br>        Using Href <br><br > <br>        </html:link> <br><br > <br>很明显,当你在相同的web应用程序中做链接是,它比page属性更加好。你也能用href在不同的服务器上创建链接: <br><br > <br>        <html:link href="http://otherserver/strutsTut/html-link.do"> <br><br > <br>        Using Href <br><br > <br>        </html:link> <br><br > <br>另一种链接到html-link.do的方法是用action属性: <br><br > <br>        <html:link action="/html-link"> <br><br > <br>        Using Action attribute <br><br > <br>        </html:link> <br><br > <br>你也可以以硬编码的方式使用参数: <br><br > <br>        <html:link page="/htmllink.do?doubleProp=3.3&longProp=32"> <br><br > <br>        Double and long via hard coded changes <br><br > <br>        </html:link> <br><br > <br>或者使用paramId, paramName, and paramProperty属性: <br><br > <br>        <html:link page="/html-link.do" paramId="booleanProperty" paramName="testbean" <br><br > <br>        paramProperty="nested.booleanProperty"> <br><br > <br>        Boolean via paramId, paramName, and paramValue <br><br > <br></html:link> <br><br > <br>解析后的代码: <br><br > <br>        <a href="/struts-exercise-taglib/html-link.do?booleanProperty=false" _fcksavedurl="/struts-exercise-taglib/html-link.do?booleanProperty=false"> <br><br > <br>        Boolean via paramId, paramName, and paramValue <br><br > <br>        </a> <br><br > <br>另外,还能使用带name属性的Map来实现传递多个参数: <br><br > <br>        <% <br><br > <br>java.util.HashMap newValues = new java.util.HashMap(); <br><br > <br>newValues.put("floatProperty", new Float(444.0)); <br><br > <br>newValues.put("intProperty", new Integer(555)); <br><br > <br>newValues.put("stringArray", new String[] <br><br > <br>{ "Value 1", "Value 2", "Value 3" }); <br><br > <br>pageContext.setAttribute("newValues", newValues); <br><br > <br>%> <br><br > <br>... <br><br > <br>        <html:link action="/html-link" name="newValues"> <br><br > <br>        Float, int, and stringArray via name (Map) <br><br > <br>        </html:link> <br><br > <br>你也能够链接到Map类型的action上,上面的代码解析后的结果: <br><br > <br>        <html:messages property="property2" message="true" id="msg" header="messages.header" footer="messages.footer"> <br><br > <br>        <tr><td><%= pageContext.getAttribute("msg") %></td></tr> <br><br > <br>        </html:messages> <br><br > <br>2.) select和option标签<b ><html:select> </strong >的属性:property-与ActionForm中的某个属性对应;size-显示option的数目;multiple-默认为fales,表示不能多选,当设定为true时,property对应的ActionForm的属性必须为数组。<html:select property="name" size=6 multiple="true"> <br><br > <br><b ><html:option></strong >的属性:key、local、bundle-指定Resource Bundle中的内容。 <br><br > <br>例如<html:option value="color1">Orange</html:option> <br><br > <br><html:option value="color1" bundle="htmlselect.Colors" key="htmlselect.red"/>它和配置文件中的<message-resources>元素的key属性匹配--> <message-resource parmeter="HtmlSelectColors" key="htmlselect.Colors"/> <br><br> <br><message-resource>中配置的资源文件为HtmlSelectColors.properties,相关内容为htmlselect.red=RED <br><br> <br><b><html:options></b>标签,提供了一组<option>元素,在<html:select>元素中可以包含多个<html:options>元素。非常灵活,可以取得集合或数组中的值。 <br><br> <br>例1 <html:options collection="coll" property="value" labelProperty="label" /> 这指在coll的集合中存放了options,value指实际能被提交的值,label是显示给用户的值。 <br><br> <br>例2 <html:options property="value" labelProperty="label" /> collection属性不被指定时,将使用表单相关的form bean,form bean中value属性存放option value,label属性值显示给用户。 <br><br> <br>例3 <html:options name="valueBean" property="values" labelName="labelsBean" labelProperty="labels" /> 这个意思是value值存放在名为valueBean的bean的vlaues属性中,它是一个collection;label值也是同样的意思。<b><html:optionsCollection></b>标签,和<html:options>的用法很相似。 <br><br> <br>例如<html:select property="custId"><html:optionsCollection property="customers" label="name" value="custId" /></html:select>这个标签和org.apache.structs.util.LabelValueBean结合的很好,如果把label和value都放到这个对象中,可以很简单的这样应用:<html:select property="custId"><html:optionsCollection property="customers" /></html:select><b>JSP Struts</b><b>之</b><b>Bean</b><b>标签库详解</b> <br><br> <br><b>Bean </b><b>标签库</b> <br><br> <br>        此标签库和Java Bean有很强的关联性,设计的本意是要在JSP 和JavaBean 之间提供一个接口。Struts 提供了一套小巧有用的标签库来操纵JavaBean和相关的对象:cookie、 header、 parameter、 define、write、message、 include、page、resource、size、struts。 <br><br> <br>1. bean:cookie、bean:header、bean:parameter这三个标签用来重新得到cookie, request header和request parameter。bean:header和bean:parameter标签定义了一个字符串;bean:cookie标签定义了一个Cookie对象。你可以使用value属性做为默认值。如果找不到指定的值,且默认值没有设定的话,会抛出一个request time异常。如果你期望返回多个值的话,可把multiple属性设为true。 <br><br> <br>        <bean:cookie id="sessionID" name="JSESSIONID" value="JSESSIONID-ISUNDEFINED"/> <br><br> <br>        // 这段代码定义了一个名为sessionID的脚本变量,如果找不到一个名为JSESSIONID的cookie,那sessionID <br><br> <br>        // 的值就被设置为JSESSIONID-ISUNDEFINED。 <br><br> <br>2. <br><br> <br>下面代码会输出一些Cookie对象的一些属性: <br><br> <br>        <jsp:getProperty name="sessionID "property="comment"/> … <br><br> <br>        <jsp:getProperty name="sessionID" property="domain"/> … <br><br> <br>        <jsp:getProperty name="sessionID" property="maxAge"/> … <br><br> <br>        <jsp:getProperty name="sessionID" property="path"/> … <br><br> <br>        <jsp:getProperty name="sessionID" property="value"/> … <br><br> <br>        <jsp:getProperty name="sessionID" property="version"/> … <br><br> <br>3. <br><br> <br>下面是在request中输出所有header的例子: <br><br> <br>        <% <br><br > <br>        java.util.Enumeration names =((HttpServletRequest) request).getHeaderNames(); <br><br> <br>%> <br><br> <br>… <br><br> <br><% <br><br > <br>        while (names.hasMoreElements()) { <br><br> <br>        String name = (String) names.nextElement(); <br><br> <br>%> <br><br> <br><bean:header id="head" name="<%= name %>"/> <br><br> <br>…<%= name %> <br><br> <br>…<%= head %> <br><br> <br>… <br><br> <br><% <br><br > <br>        } <br><br> <br>%> <br><br> <br>4. <br><br> <br>下面是parameter的例子: <br><br> <br>        <bean:parameter id="param1" name="param1"/> <br><br> <br>        <bean:parameter id="param2" name="param2" multiple="true"/> // 此处定义了一个param2[]。 <bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/> <br><br> <br>5. <br><br> <br>于其它标签结合使用: <br><br> <br>        <bean:header id="browser" name="User-Agent"/> <br><br> <br><P>You are viewing this page with: <bean:write name="browser"/></P> <br><br> <br>---------------------------------------------------------------------------------------------------------------------------------- <br><br> <br><bean:cookie id="username" name="UserName" scope="session" <br=""> <br>value="New User" /> <br><br> <br><P>Welcome <bean:write name="username" property="value"/!</bean:cookie><br> <br>        // 根据cookie创建一个新的Bean,如果用户名称已经存储在cookie中,它就不显示为一个新用户。 <br><br> <br>6. <br><br> <br>7. bean:define:有三个用途。 <br><br> <br>一是定义新字符串常量: <br><br> <br>        <bean:define id="foo" value="This is a new String"/> <br><br> <br>        <bean:define id="bar" value='<%= "Hello, "+ user.getName() %>'/> <br><br> <br>        <bean:define id="last" scope="session" value='<%= request.getRequestURI() %>'/> <br><br> <br>8. <br><br> <br>二是复制一个现有的bean给新的bean: <br><br> <br>        <bean:define id="foo" name="bar"/> <br><br> <br>        <bean:define id="baz" name="bop" type="com.mycompany.MyClass"/> //定义脚本变量的类型,默认为Object <br><br> <br>9. <br><br> <br>三是复制一个现有的bean的属性给新的bean: <br><br> <br>        <bean:define id="bop" name="user" property="role[3].name"/> <br><br> <br>        <bean:define id="foo" name="bar" property="baz" scope="request" toScope="session"/> <br><br> <br>        //toScope属性指新bean的scope,默认为page <br><br> <br>10. 上段代码的意思是把名为bar的bean的baz属性赋值给foo,foo的类型为String(默认)。 <br><br> <br>11. bean:include这个标签和bean:include标签和相似,不同点就是它定义了一个可以复用的脚本变量。用id属性命名一个新的脚本变量,还支持forward、href、page和transaction.属性,和html:link中的属性意义一样。 <br><br> <br>        <bean:include id="footerSpacer" page="/long/path/footerSpacer.jsp"/> <br><br> <br>        然后你能够在多个地方(scope为page)调用: <bean:write name="footerSpacer" /> <br><br> <br>12. <br><br> <br>13. bean:message用来实现对国际化的支持的一个标签,配合java.util数据包中定义的Locale和ResourceBundle类来完成这个任务,用java.text.MessageFormat类配置消息的格式。 首先要指定资源文件的名称。这个文件会包含用默认语言编写的在程序中会出现的所有消息,这些消息以“关键字-值”的形式存储。文件需要存储在类路径下,路径要作为初始化参数传送给ActionServlet。 实现国际化的规定:所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。如果基本资源文件的名称是ApplicationResources.properties,那么用其他特定语言编写的资源文件的名称就应该是ApplicationResources_xx.properties(xx为ISO编码,如英语是en)。因此这些文件应包含相同的关键字,但关键字的值是用特定语言编写的。 然后,ActionServlet的区域初始化参数必须与一个true值一起传送,这样ActionServlet就会在用户会话中的Action.LOCALE_KEY关键字下存储一个特定用户计算机的区域对象。现在可以运行一个国际化的web站点,它可以根据用户计算机上的设置的区域自动以相应的语言显示。 <br><br> <br>使用特定的字符串来替换部分消息: <br><br> <br>        在资源文件中的定义:info.myKey = The numbers entered are {0},{1},{2},{3} <br><br> <br>        标记的使用:<bean:message key="info.myKey" arg0="5" arg1="6" arg2="7" arg3="8"/> <br><br> <br>        Jsp页面的显示:The numbers entered are 5,6,7,8 // 最多支持4个参数 <br><br> <br>14. <br><br> <br>15. bean:page:把Jsp中的内部对象做为脚本变量。 <br><br> <br><bean:page id="requestObj" property="request"/> <br><br> <br>16. <br><br> <br>17. bean:resource:获得应用程序的资源,这个资源可以是一个String或从java.io.InputStream中读入。使用ServletContext.getResource()ServletContext.getResourceAsStream() 方法检索web应用中的资源,如果在检索资源时发生问题,就会产生一个ruquest time异常。 <br><br> <br>        <bean:resource id="webxml" name="/WEB-INF/web.xml"/> <br><br> <br>18. 使用input属性时,资源会做为一个InputStream,如果不指定就被当成一个String。 <br><br> <br>19. bean:size:得到存储在array、collection或map中的数目,类型为java.lang.Integer。 <br><br> <br>        <bean:size id="count" name="employees" /> <br><br> <br>20. <br><br> <br>21. bean:struts:复制Struct 对象(三种类型)给新的bean,scope为page。 <br><br> <br>        <bean:struts id="form" formBean="CustomerForm"/> <br><br> <br>        <bean:struts id="fwd" forward="success"/> <br><br> <br>        <bean:struts id="map" mapping="/saveCustomer"/> <br><br> <br>22. <br><br> <br>23. bean:write:以字符串形式输出bean的属性值。filter属性:设为true时,将HTML保留字转换为实体("<" 转换为<); <br><br> <br>ignore属性:如果对象不存在,不会抛出异常。 <br><br> <br>        <bean:write name="userRegistration" property="email" scope="request" >=""><br> <br>         <br><br> <br>Struts-Logic 标签库 <br><br> <br>此标签库可以分为三种类型:条件、循环、转发/重定向。 <br><br> <br>一.) 条件类型 <br><br> <br>logic:empty和logic:notEmpty <br><br> <br>logic:empty标签判断脚本变量是否为null,是否是一个空的字符串(长度为0),是否是一个空的collection或map(调用isEmpty()方法来判断)。logic:notEmpty标签类似。 <br><br> <br>        <logic:empty name="myBean"> <br><br> <br>        The bean is missing <br><br> <br>        </logic:empty> <br><br> <br>        <logic:notEmpty name="myBean"> <br><br> <br>        The bean is not missing <br><br> <br>        </logic:notEmpty> <br><br> <br>上段代码表示当一个名为myBean的bean在所有的scope中都不存在时,输出The bean is missing;存在的话输出The bean is not missing。 <br><br> <br>此标签有三个属性:name、property和scope。 <br><br> <br>logic:equal, logic:notEqual, logic:lessThan, logic:greaterThan,logic:lessEqual, and logic:greaterEqual <br><br> <br>这堆logic:*equal*标签从名字上就能知道意思,它们使用起来有些笨拙。 <br><br> <br>有如下属性:name、property、scope、value、cookie、header、parameter。 <br><br> <br>        <logic:equal name="bean" property="doubleProperty" value="<%= doub1 %>"> <br><br> <br>        equal <br><br> <br>        </logic:equal> <br><br> <br>        <logic:greaterEqual name="bean" property="doubleProperty" value="<%= doub1 %>"> <br><br> <br>        greaterEqual <br><br> <br>        </logic:greaterEqual> <br><br> <br>logic:present和logic:notPresent <br><br> <br>检查header、request parameter、cookie、JavaBean或JavaBean propertie是否存在且不等于null。另外还可以检查当前用户的身份,使用属性user和role。 <br><br> <br>其它的属性有:name、property、scope、cookie、header、parameter。 <br><br> <br>        <logic:notPresent name="myBean" property="prop" scope="page"> <br><br> <br>        The bean property bean.prop is present <br><br> <br>        </logic:notPresent> <br><br> <br>上段代码检查在page作用域内名为myBean的bean是否有一个prop属性。 <br><br> <br>logic:match和logic:notMatch <br><br> <br>比较两字符串是否相等,可以比较字符串的开始的、结尾的或其中的某个部分。 <br><br> <br>location属性:指定从某个位置开始进行比较。 <br><br> <br>其它的属性有:name、property、scope、value、cookie、header、parameter。 <br><br> <br>下面的例子是检查浏览器类型: <br><br> <br>        <logic:match header="User-Agent" value="Mozilla"> <br><br> <br>        Mozilla! <br><br> <br>        </logic:match> <br><br> <br>        <logic:notMatch header="User-Agent" value="Mozilla"> <br><br> <br>        Not Mozilla :( <br><br> <br>        </logic:notMatch> <br><br> <br>检查bean属性是否匹配"hello world"字符串: <br><br> <br>        <logic:match name="bean" property="stringProperty" value="hello world"> <br><br> <br>        Hello World! <br><br> <br>        </logic:match> <br><br> <br>        <logic:notMatch name="bean" property="stringProperty" value="hello world"> <br><br> <br>        I'm so sad and lonely. <br><br> <br>        </logic:notMatch> <br><br> <br>检查名为"name"的请求参数是否是"xyz"的子字符串,但是子字符串必须从"xyz"的索引位置1开始(也就是说子字符串必须是"y"或"yz"): <br><br> <br>        <logic:match parameter="name" value="xyz" location="1"> <br><br> <br>        The parameter name is a sub-string of the string xyz from index 1 <br><br> <br>        </logic:match> <br><br> <br>二.) 循环类型 <br><br> <br>logic:iterate <br><br> <br>重复嵌套在此标签体内的指定集合的元素,集合必须为如下类型:array 、Collection(包括ArrayList和Vector)、Enumeration、Iterator、Map(包括HashMap、Hashtable和TreeMap)。例如: <br><br> <br>        <logic:iterate id="employee" name="department" property="employees" scope= "request"> <br><br> <br>… <br><br> <br>        <bean:write name="employee" property="username" /> <br><br> <br>… <br><br> <br>        <bean:write name="employee" property="name" /> <br><br> <br>… <br><br> <br>        <bean:write name="employee" property="phone" /> <br><br> <br>… <br><br> <br>        </logic:iterate> <br><br> <br>上面的代码迭代了一个employee的集合,是department属性employees的一个集合,作用域为request。 <br><br> <br>为了输出第五个到第十个employee,需要使用length和offset属性: <br><br> <br>        <logic:iterate id="employee" name="department" property="employees" scope="request" <strong="">length="10" <b>offset</b>="5"> <br><br> <br>… <br><br> <br>        <bean:write name="employee" property="username" /> <br><br> <br>… <br><br> <br>        <bean:write name="employee" property="name" /> <br><br> <br>… <br><br> <br>        <bean:write name="employee" property="phone" /> <br><br> <br>… <br><br> <br>        </logic:iterate> <br><br> <br>        你可以定义一个变量保存当前的索引值: <br><br> <br>        <ol> <br><br> <br>        <logic:iterate id="element" name="bean" property="stringArray" <strong="">indexId="index"> <br><br> <br>        <li> <br><br> <br>        <i> <br><br> <br>        <bean:write name="element"/> <br><br> <br>        </i>  <br><br> <br>        [<bean:write name="index"/>]</li> <br><br> <br>        </logic:iterate> <br><br> <br>        </ol> <br><br> <br>三.) 转发/重定向类型 <br><br> <br>logic:forward和logic:redirect <br><br> <br>logic:forward标签和jsp:forward标签和相似,但它可以使用global forward中的一个ActionForward: <br><br> <br>        <logic:forward name="login" /> <br><br> <br>---------------------------------------------------------------------------------------------------------------------------------- <br><br> <br>        与上面相关的global forward中的代码: <br><br> <br>        <global-forwards> <br><br> <br>        <forward name="login" path="/loginForm.jsp"/> <br><br> <br>        </global-forwards> <br><br> <br>logic:redirect标签和上面的标签类似,但它默认调用的方法是response.sendRedirect(),取代了上面的requestDispatcher.forward()。最大的不同是它支持所有html:link标签的属性,所以你能够指定request参数: <br><br> <br>        <logic:redirect name="login" paramId="employeeId" paramName="employee" property="id" /> <br><br> <br>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1720673 <br><br> <br> <br><br> <br>本文转自 <br><br> <br><a href="http://blog.csdn.net/frednxh211/archive/2007/08/01/1720673.aspx" _fcksavedurl="http://blog.csdn.net/frednxh211/archive/2007/08/01/1720673.aspx">http://blog.csdn.net/frednxh211/archive/2007/08/01/1720673.aspx</a> <br></logic:iterate></logic:iterate></bean:write></action>

struts之标签库相关推荐

  1. Struts 2 标签库详解

    2019独角兽企业重金招聘Python工程师标准>>> Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML 标签:      ...

  2. Struts框架(三)——标签库

    引言: 知识的学习在于积累,不断充电,储备自己的能量. 概述: Struts Taglib(标签库),一种开发人员编程效率的工具,减少复杂的传值与逻辑. 内容: 一 分类: 1 Struts-bean ...

  3. Struts1.x系列教程(4):标签库概述与安装

    Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript.HTML等)实现的.这些Struts标签被写在JSP页面中,用 ...

  4. Struts2标签库和OGNL

    学习内容 Struts 2标签库 OGNL 能力目标 熟练使用Struts 2常用标签 熟练使用OGNL 本章简介 前面我们编写的案例使用的都是HTML标签,这些标签并不能很好的与Struts 2框架 ...

  5. jstl标签库基础教程及其使用代码

    概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Sta ...

  6. Struts2 标签库

    Struts 2标签简介 Struts 标签分类 使用Struts标签库 OGNL OGNL集合运算 OGNL表达式对静态属性的访问 控制标签 if/else if/else iterator gen ...

  7. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...

  8. Android标签库,JSP Struts之HTML标签库详解 _Android/移动互联网/物联网/_夜鹰教程网...

    标签库 说明 HTML 标签 用来创建能够和 Struts 框架和其他相应的 HTML 标签交互的 HTML 输入表单 Bean 标签 在访问 JavaBeans 及其属性,以及定义一个新的 bean ...

  9. java web框架struts,JavaWeb框架_Struts2_(五)-----Struts2的标签库

    1.Struts2的标签库 1.1 Struts2标签库概述 Struts2的标签库可以分为以下3类:用户界面标签.非用户界面标签.AJAX标签; 2.1.1 Struts2标签库的分类和使用 1.  ...

最新文章

  1. 设计ADuC845低噪声信号采集版
  2. Leetcode 455.分发饼干 (每日一题 20210708 同类型题)
  3. vue后端框架mysql_springboot + vue 前后端结合·数据库查询
  4. mysql g月份分组_PowerBI快捷键——视觉对象分组功能
  5. 回旋矩形C语言,C语言回旋函数解释下,该如何处理
  6. vue学习笔记-02-前端的发展历史浅谈mmvm设计理念
  7. 从零开始学Pytorch(零)之安装Pytorch
  8. 2d shader unity 阴影_UNITY崩坏3角色渲染实践
  9. Android学习笔记---22_访问通信录中的联系人和添加联系人,使用事物添加联系人...
  10. 阿里云rds mysql 并发_干货 | 浅析RDS MySQL 8.0语句级并发控制-阿里云开发者社区
  11. 济南 天然气 暖气 物业费 水费 电费价格
  12. 4 pwm 什么时候采样电流_电机控制之电流采样及坐标变换第一部分
  13. Linux系统Ubuntu下部署Tomcat
  14. 异步任务,HttpContext.Current为null解决办法
  15. 分享CrystalDiskInfo8.2.4与CrystalDiskMark6.0.2个性版本下载
  16. matlab相反数计数,怎么把origin表格中的数改成相反数
  17. win10系统vmware虚拟机安装macOs Monterey
  18. Ruby完全读书指南
  19. PHP中调用http接口
  20. 【pandas数据分析】pandas概述

热门文章

  1. 信息熵概念随笔——信息熵、信息的熵
  2. 图片裁剪 cropper.js 上传组件封装 vue
  3. 恒盛策略|主力洗盘的目的是什么?投资者如何应对?
  4. H264VideoToolBox硬件解码
  5. tensorflow和Keras 转换RGB到BGR的实现代码
  6. 我爱程序员-尘世中一个迷途小书童
  7. 【图像】【OpenCV鱼眼矫正】二、fisheye::initUndistortRectifyMap()源码分析
  8. IDEA中Spring的配置使用
  9. 【计算机毕业设计】703学生考勤管理系统
  10. 关于p分数反常积分的收敛与发散