JSP Struts?/strong>HTML标签库详?/strong>
Struts提供了五个标{ֺQ即QHTML、Bean、Logic、Template和Nested?
标签?/p> |
说明 |
HTML 标签 |
用来创徏能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 |
Bean 标签 |
|
Logic 标签 |
理条g产生的输出和对象集生的循环 |
Template 标签 |
随着Tiles框架包的出现Q此标记已开始减?/p> |
Nested 标签 |
增强对其他的Struts 标签的嵌套用的能力 |
标签的公q?/strong>
使用固定属性名U的Struts 标签Q?/p>
属?/p> |
说明 |
id |
命名自定义标{ֈ建时的脚本变量名?/p> |
name |
指出关键字|在该关键字下可以扑ֈ一个存在的bean 。如果给Zscope属性,则仅仅在scope中查找。否则,Ҏ标准的顺序在各种scope中查找:(page, request, session, or application)?/p> |
property |
指出bean 中的某个属性,可以在其中检索倹{如果没有标明,则用对象本w的倹{?/p> |
scope |
定义了Bean在哪个范?page, request, session, or application)中被查找。如果没有标明按序查找。脚本变?见id)在相同的范围中创徏?/p> |
Struts 标签也支持嵌套引用,例如Q?/p>
Property="foo.bar.baz" |
虽然Struts 标签的设计原意是Z避免使用scriptletQscriptlet的表辑ּq能够提供给所有的Struts 标签使用。但L保用完整的表达?
错误Q?br />
<html:link href="'<%= "/" + name %>/index.jsp>'> |
Html 标签?/strong>
<!--[if !supportLists]-->1. <!--[endif]--><html>标签
它有两个属性:locale和xhtmlQ两者都不是必需的?/p>
<html:html locale=\"true\"> |
<!--[if !supportLists]-->2. <!--[endif]-->说明Q生成的l果取决于Struts应用E序所位于的服务器的locale。如果你应用程序部|到一个不同locale的服务器Q你不需要改变代码,Locale会自动调整?
<!--[if !supportLists]-->3. <!--[endif]--><base>标签Q表C所包含面的绝对位|。这个标{֏有内嵌在head标签中才有效?/p>
<html:base/> |
<!--[if !supportLists]-->4. <!--[endif]--><img>标签
最重要的属性pageQ图象文件的路径Q前面必d有一个斜Uѝ?br />
其它属性:heignt、width、alt?/p>
<html:img page=\"/logo.gif\" height=\"50\" width=\"200\" alt=\"Web Logo\"/> |
<!--[if !supportLists]-->5. <!--[endif]--><link>标签
<html:link page=\"/index.html\">Click demo</html:link> |
<!--[if !supportLists]-->6. <!--[endif]--><errors>标签Q通过一个简单的<html:errors/>标签Q你可以在一个JSP面上显C完全自定义的错误信息。功能超强大Q!
说明Q这个标{֜Request对象的属性集合中查找reserved key。如果它扑ֈ一个reserved keyQ它假设这个key是一个String、或是一个String数组
Q它包含在模块的MessageResources中查扄message keysQ、或是类型ؓorg.apache.struts.action.ActionErrors的一个对象?br />
如果在应用程序资源中存在相应的信息,那么可以用下面q些可选的message keysQ?nbsp;
· errors.header or errors.prefixQ相应的信息在错误信息的单独列表前显C?nbsp;
· errors.footer or errors.suffixQ相应的信息在错误信息的单独列表后显C?
<!--[if !supportLists]-->7. <!--[endif]--><form>标签pd
使用<form>标签时必遵循一些规则:
<html:form action=\"/login\" > |
<!--[if !supportLists]-->2. <!--[endif]--><!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportLists]-->3. <!--[endif]-->M包含?lt;form>中用来接收用戯入的标签Q?lt;text>?lt;password>?lt;hidden>?lt;textarea>?lt;radio>?lt;checkbox>?lt;select>Q必d相关的form bean中有一个指定的属性倹{比如,如果你有一个属性D指定?#8220;username”?lt;text>标签Q那么相关的form bean中也必须有一个名?#8220;username”的属性。输?lt;text>标签中的g被用于生成form bean的userName属性?/p>
<form>标签q有一些不是必M很有用的“ơ要”属性?br />
比如Q你可以用focus属性来生成JavaScriptQ它?#8220;定焦”QfocusQ到该form所包含的一个元素上。用focus属性时你需要给它指定元素的名称?/p>
<body> |
有没有看到这个标{ֺ是如何徏立JavaScript来定焦到password元素上的? q也是该库让人着qL地方之一。你不用担心如何在客Lq行~程Q它会帮你自动生成?br />
q可以看刎ͼ<form>标签中method属性的~省值是POST?/p>
该标{是用来判断是否为空的。如果ؓI,该标{体中嵌入的内容׃被处理。该标签用于以下情况Q?/p>
1Q当Java对象为nullӞ
2Q当String对象?"Ӟ
3Q当java.util.Collection对象中的isEmpty()q回trueӞ
4Q当java.util.Map对象中的isEmpty()q回true时?br />
<logic:empty name="user">
...
</logic:empty>
该句{同于:
if (user.isEmpty()) {
...
}
2. logic:notEmpty
该标{应用正好和logic:empty标签相反Q略?br />
3. logic:equal
该标{ؓ{于比较W?br />
eg1. 比较用户的状态属性是?Q若?Q输?启用";
<logic:equal name="user" property="age" value="18">
已经成年
</logic:equal>
eg2. 如果上例中的value值是动态获得的Q例如需要通过bean:write输出Q因struts不支持标{ֵ套,可采用EL来解册问题?br />
<logic:equal name="user" property="age" value="${user.age}">
......
</logic:equal>
4. logic:notEqual
该标{意义与logic:equal相反Q用方法类|略?br />
5. logic:forward
该标{于实现页面导向,查找配置文g的全局forward?br />
eg. <logic:forward name="login"/>
6. logic:greaterEqual
为大于等于比较符?br />
eg. 当某人的q龄大于{于18Ӟ输出“已经成年”Q?br />
<logic:greaterEqual name="user" property="age" value="18">
已经成年
</logic:greaterEqual>
7. logic:greaterThan
此ؓ大于比较W,使用Ҏ同logic:greaterEqualQ略;
8. logic:lessEqual
此ؓ于{于比较W,使用Ҏ同logic:greaterEqual,?
9. logic:lessThan
此ؓ于比较W,使用Ҏ同logic:greaterEqual,?
10. logic:match
此标{比较对象是否相{;
eg1. 查在request范围内的name属性是否包?laoding"Ԍ
<logic:match name="name" scope="request" value="laoding">
<bean:write name="name"/>中有一?#8220;laoding”丌Ӏ?br />
</logic:match>
eg2. 查在request范围内的name属性是否已“laoding”作ؓ起始字符Ԍ
<logic:match name="name" scope="request" value="laoding" location="start">
<bean:write name="name"/>?#8220;laoding”作ؓ起始字符丌Ӏ?br />
</logic:match>
eg3.
<logic:match header="user-agent" value="Windows">
你运行的是Windowspȝ
</logic:match>
11. logic:notMatch
此标{于比较对象是否不相同Q与logic:match意义相反Q用方法类|略?br />
12. logic:messagePresent
该标{于判断ActionMessages/ActionErrors对象是否存在Q?br />
eg. 如果存在error信息Q将其全部输出:
<logic:messagePresent property="error">
<html:messages property="error" id="errMsg" >
<bean:write name="errMsg"/>
</html:messages>
</logic:messagePresent >
13. logic:messagesNotPresent
该标{于判断ActionMessages/ActionErrors对象是否不存?使用Ҏ与logic:messagePresentcMQ略
14. logic:present
此标{于判断request对象传递参数是否存在?br />
eg1. user对象和它的name属性在request中都存在Ӟ输出相应字符Ԍ
<logic:present name="user" property="name">
user对象和该对象的name属性都存在
</logic:present>
eg2. 若有一个名字ؓ“user”的JavaBeanQ输出对应字W串Q?br />
<logic:present name="user" >
有一个名字ؓ“user”的JavaBean?br />
</logic:present>
eg3.
<logic:present header="user-agent">
we got a user-agent header.
</logic:present>
15. logic:notPresent
此标{于判断request对象传递参数是否不存在Q意义与了logic:present相反Q用方法类|略?br />
16. logic:redirect
该标{于实现页面{向,可传递参数?br />
eg1. <logic:redirect href="http://www.aygfsteel.com/laoding"/>
17. logic:iterator
用于昄列表为collection的|List ,ArrayList,HashMap{)?br />
eg1. 逐一输出用户列表(userlList)中用L姓名Q?br />
<logic:iterate id="user" name="user">
<bean:write name="user" property="name"/><br>
</logic:iterate>
eg2. 从用户列表中输出?开始的两个用户的姓?br />
<logic:iterate id="user" name="user" indexId="index" offset="1" length="2">
<bean:write name="index"/>.<bean:write name="user" property="name"/><br>
</logic:iterate>
eg3. logic:iterator标签的嵌?br />
<logic:iterate id="user" indexId="index" name="user">
<bean:write name="index"/>. <bean:write name="user" property="name"/><br>
<logic:iterate id="address" name="user" property="addressList" length="3" offset="1">
<bean:write name="address"/><br>
</logic:iterate>
</logic:iterate>