Struts1.2的标签

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:link href="'<%= "/" + name %>/index.jsp>'>

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

Html 标签库
1.        <html> 标签
它有两个属性: locale xhtml ,两者都不是必需的。

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

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

2.        说明:生成的结果取决于 Struts 应用程序所位于的服务器的 locale 。如果你将应用程序部署到一个不同 locale 的服务器,你不需要改变代码, Locale 会自动调整。
3.        <base> 标签:表示所包含页面的绝对位置。这个标签只有内嵌在 head 标签中才有效。

<html:base/>

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

4.        <img> 标签
最重要的属性 page :图象文件的路径,前面必须带有一个斜线。
其它属性: heignt width alt

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

5.        <link> 标签

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

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

6.        <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
:相应的信息在错误信息的单独列表后显示。
7.        <form> 标签系列
使用 <form> 标签时必须遵循一些规则:
1.       标签中必须包含一个 action 属性,它是这个标签中唯一必需的属性。如果不具备该属性则 JSP 页面会抛出一个异常。之后你必须给这个 action 属性指定一个有效值。一个有效值是指应用程序的 Struts 配置文件中元素里的任何一个子元素的访问路径。而且相应的元素中必须有一个 name 属性,它的值是 form bean 的名称。

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

如果你有上述一个标签 ,那么你的 Struts 配置文件的元素中必须有一个如下显示为粗体的元素:
<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 相关联的。

2.      
3.       任何包含在 <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 属性时你需要给它指定元素的名称。

<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>
<form name=/"loginForm/" method=/"post/" action=/"/myStrutsApp/login.do/">
User Name: <input type=/"text/" name=/"userName/" value=/"/">
<br>Password: <input type=/"text/" 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:password property=/"password/"   redisplay=/"false/"/>

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

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

<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>

遗补 1.)<html:link> 标签
forward 属性:链接到一个 global forward 上; action 属性:链接到一个 action mapping 上;
href
属性:这个链接会转发给控制器,由控制器做决定; page 属性:一个相对的链接。

page 属性链接到 action 上:

   <html:link page="/html-link.do">
   Linking with the page attribute.
</html:link>


注意,上面的代码中你不必指定 web 的关联。相反的,如果你使用 href 属性,你就必须像下面所示指出 web 的关联 ( 这里的关联就是 struts-exercise)

<html:link href="/struts-exercise-taglib/html-link.do">
   Using Href
</html:link>


很明显,当你在相同的 web 应用程序中做链接是,它比 page 属性更加好。你也能用 href 在不同的服务器上创建链接:

<html:link href="http://otherserver/strutsTut/html-link.do">
Using Href
</html:link>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值