Struts标签库详解,非常好的Struts标签详解(转载

来源:互联网 发布:数据库序列如何创建 编辑:程序博客网 时间:2024/05/01 14:46
Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。 HTML 标签: 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 Bean 标签: 在访问JavaBeans 及其属性,以及定

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 标签使用。但请确保使用完整的表达式:
错误:
Html代码 
<html:link href="'<%= "/" + name %>/index.jsp>'> 

<html:link href="'<%= "/" + name %>/index.jsp>'>

正确:
Html代码 
<html:link href="'<%= "/" + name + "/index.jsp" %>'>    // 表达式必须提供整个属性值 

<html:link href="'<%= "/" + name + "/index.jsp" %>'>    // 表达式必须提供整个属性值

Html 标签库
<html>标签
它有两个属性:locale和xhtml,两者都不是必需的。
Html代码 
<html:html locale=\"true\"> 

<html:html locale=\"true\">

此行代码解析后:
Html代码 
<html lang=\"en\"> 

<html lang=\"en\">

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

<base>标签:表示所包含页面的绝对位置。这个标签只有内嵌在head标签中才有效
Html代码 
<html:base/> 

<html:base/>

此行代码解析后:
Html代码 
<base href=\"http://www.mymain.com/myStrutsApp/testing.jsp\"> 

<base href=\"http://www.mymain.com/myStrutsApp/testing.jsp\">

<img>标签
最重要的属性page:图象文件的路径,前面必须带有一个斜线。
其它属性:height、width、alt。
Html代码 
<html:img page=\"/logo.gif\" height=\"50\" width=\"200\" alt=\"Web Logo\"/> 

<html:img page=\"/logo.gif\" height=\"50\" width=\"200\" alt=\"Web Logo\"/>

<link>标签
Html代码 
<html:link page=\"/index.html\">Click demo</html:link> 

<html:link page=\"/index.html\">Click demo</html:link>

此行代码解析后:
   Html代码 
<a href=\"/index.html\">Click demo</a> 

<a href=\"/index.html\">Click demo</a>

<errors>标签:通过一个简单的<html:errors/>标签,你就可以在一个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:相应的信息在错误信息的单独列表后显示。

<form>标签系列
使用<form>标签时必须遵循一些规则
标签中必须包含一个action属性,它是这个标签中唯一必需的属性。如果不具备该属性则JSP页面会抛出一个异常。之后你必须给这个action属性指定一个有效值。一个有效值是指应用程序的Struts配置文件中元素里的任何一个子元素的访问路径。而且相应的元素中必须有一个name属性,它的值是form bean的名称。
Html代码 
<html:form action=\"/login\" >  

<html:form action=\"/login\" > 

如果你有上述一个标签 ,那么你的Struts配置文件的元素中必须有一个如下显示为粗体的元素:
Xml代码 
<action-mappings>   
      <action path=\"/login\"   
       type=\"com.javapro.struts.LoginAction\"    
       name=\"loginForm\"  
       scope=\"request\"  
       input=\"/login.jsp\"> 
       <forward name=\"success\" path=\"/mainMenu.jsp\"/> 
     </action> 
     .  
     .  
     .  
</action-mappings> // <SPAN style="FONT-SIZE: 9pt">这就是说一个</SPAN><SPAN style="FONT-SIZE: 9pt">form</SPAN><SPAN style="FONT-SIZE: 9pt">标签是和</SPAN><SPAN style="FONT-SIZE: 9pt">form bean</SPAN><SPAN style="FONT-SIZE: 9pt">相关联的</SPAN> 

<action-mappings>
      <action path=\"/login\"
       type=\"com.javapro.struts.LoginAction\" 
       name=\"loginForm\"
       scope=\"request\"
       input=\"/login.jsp\">
       <forward name=\"success\" path=\"/mainMenu.jsp\"/>
     </action>
     .
     .
     .
</action-mappings> // 这就是说一个form标签是和form bean相关联的


任何包含在<form>中用来接收用户输入的标签(<text>、<password>、<hidden>、<textarea>、<radio>、<checkbox>、<select>)必须在相关的form bean中有一个指定的属性值。比如,如果你有一个属性值被指定为“username”的<text>标签,那么相关的form bean中也必须有一个名为“username”的属性。输入<text>标签中的值会被用于生成form bean的userName属性。

<form>标签还有一些不是必须但很有用的“次要”属性。
比如,你可以用focus属性来生成JavaScript,它会“定焦”(focus)到该form所包含的一个元素上。使用focus属性时你需要给它指定元素的名称。

Html代码 
<body> 
<html:form action=\"/login\" focus=\"password\"> 
User Name: <html:text property=\"userName\"/> 
<br>Password: <html:text property=\"password\"/> 
<br><html:submit/> 
</html:form> 
</body> 

<body>
<html:form action=\"/login\" focus=\"password\">
User Name: <html:text property=\"userName\"/>
<br>Password: <html:text property=\"password\"/>
<br><html:submit/>
</html:form>
</body>

代码解析后:
Html代码 
<body> 
<form name=\"loginForm\" method=\"post\" action=\"/myStrutsApp/login.do\"> 
User Name: <input type=\"text\" name=\"userName\" value=\"\"> 
<br>Password: <input type=\"text\" name=\"password\" value=\"\"> 
<br><input type=\"submit\" value=\"Submit\"> 
</form> 
<script language=\"JavaScript\" type=\"text/javascript\"> 
   <!--  
if (document.forms[\"loginForm\"].elements[\"password\"].type != \"hidden\")   
       document.forms[\"loginForm\"].elements[\"password\"].focus()  
   // --> 
</script> 
 
</body> 

<body>
<form name=\"loginForm\" method=\"post\" action=\"/myStrutsApp/login.do\">
User Name: <input type=\"text\" name=\"userName\" value=\"\">
<br>Password: <input type=\"text\" name=\"password\" value=\"\">
<br><input type=\"submit\" value=\"Submit\">
</form>
<script language=\"JavaScript\" type=\"text/javascript\">
   <!--
if (document.forms[\"loginForm\"].elements[\"password\"].type != \"hidden\")
       document.forms[\"loginForm\"].elements[\"password\"].focus()
   // -->
</script>

</body>
 
有没有看到这个标签库是如何建立JavaScript来定焦到password元素上的? 这也是该库让人着迷的地方之一。你不用担心如何在客户端进行编程,它会帮你自动生成。
还可以看到,<form>标签中method属性的缺省值是POST。

<text>标签、<hidden>标签、<textarea>标签、<radio>标签、<checkbox>标签、<submit>标签、<reset>标签:
都有一个property属性,最后会被转换成HTML中的name属性,当然还有name和value属性。

<password>标签
Html代码 
<html:password property=\"password\"   redisplay=\"false\"/> 

<html:password property=\"password\"   redisplay=\"false\"/>

该标签中的一个很重要的属性是"redisplay",它用于重新显示以前输入到这个区域中的值。该属性的缺省值为true。然而,为了使password不能被重新显示,你或许希望将该属性的值设为false。

<select>标签和<option>标签:

Html代码 

<html:select property=\"color\" size=\"3\">     <html:option value=\"r\">red</html:option>     <html:option value= \"g\">green</html:option>     <html:option value= \"b\">blue</html:option>  </html:select>  <html:select property=\"color\" size=\"3\">   <html:option value=\"r\">red</html:option>   <html:option value= \"g\">green</html:option>   <html:option value= \"b\">blue</html:option></html:select>  

(责任编辑:中国IT技术网)

http://www.chinese-it.com/plus/view-22687-1.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 嘴皮里面长泡怎么办 嘴巴里经常长泡怎么办 嘴唇上长透明泡怎么办 嘴唇上长很多泡怎么办 嘴巴里长白色泡怎么办 做了漂唇起泡了怎么办 漂唇之后起泡了怎么办 漂唇后起了水泡怎么办 嘴唇起泡,弄破了怎么办 九个月的宝宝上火了怎么办 8岁儿童嘴唇起泡怎么办 宝宝嘴皮上火起泡了怎么办 上嘴唇起泡肿了怎么办 上嘴唇突然肿了怎么办? 醒来上嘴唇肿了怎么办 嘴巴突然肿了怎么办呢 下嘴唇肿起来了怎么办 上嘴唇肿了起泡怎么办 上火下嘴唇肿了怎么办 上火嘴唇都肿了怎么办 嘴唇起泡后肿了怎么办 嘴唇上有白点颗粒状怎么办 嘴唇缺了一块红怎么办 人得钩端螺旋体怎么办 脖子上有鸡皮肤怎么办 不结婚老了以后怎么办 丁克族老了怎么办知乎 2个月宝宝咳嗽怎么办 干活累的手疼怎么办 脸上长白色的癣怎么办 全身起红斑很痒怎么办 宝宝脖子红烂了怎么办 背上长红斑很痒怎么办 身上起风疙瘩很痒怎么办 身上起小包很痒怎么办 浑身起红包很痒怎么办 手太粗糙怎么办小窍门 小腿长疙瘩很痒怎么办 腿过敏起红疙瘩怎么办 肚子上起红疙瘩很痒怎么办 小蚂蚁咬了肿了怎么办