posts - 51, comments - 17, trackbacks - 0, articles - 9
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

再读struts

Posted on 2007-03-17 14:32 chenweicai 阅读(635) 评论(1)  编辑  收藏

使用Struts有一段时间了,但也仅仅涉及到一部分内容,比如Action做逻辑控制、FormBean对象化用户提交的Form数据、国际化资源文件,Struts很重要的一部分Struts Tag却一直没有使用到,一是因为要熟练的使用Struts Tag需要一定的时间来,二也是因为自己有一套比较好的Tag可用。JSP页面上Tag使用的较多虽然能让页面看起来比较整洁,但可读性会相对降低,开发时的灵活性也会降低。相对来说还是比较看中Action的逻辑控制部分。

重新翻看Struts书本,特别注意了Tag部分,也还是觉得有些眩晕,或许使用熟练是才能体验出其中的玄妙。摘录几个Tag放在这里。

1、<bean:message key="hello.jsp.page.heading"/>
用于输出资源文件中的内容

2、<html:errors/>或者写成<html:error property="xxx"/>
用于输出错误信息,当指定peoperty时,则只显示对应的错误信息,如:
ActionErrors errors = new ActionErrors();
errors.add("xxx",new ActionError("username.null"));

3、<html:form action="/Helloworld">
Form表单

4、<html:text property="userName" size="16"/>
表单中的输入域

5、<html:submit property="submit" value="Submit"/>
提交按钮

6、<html:reset/>
重置按钮

7、<bean:write name="bitiliu" property="userName"/>
从request中或者session中获得bitiliu对象,并输出userName属性的值,可指定scope

8、非空逻辑判断
<logic:notEmpty name="bitiliu" property="userName" scope="request">
 do something...  
</logic:notEmpty>

9、<html:link>
用于生成链接,可以增加参数
<%
 pageContext.setAttribute("name","I am a boy!");

 HashMap myMap = new HashMap(); 
 myMap.put("name","bitiliu");
 myMap.put("password",new String[]{"1","2","3"});
 pageContext.setAttribute("myMap",myMap);
%>
<html:link page="/Test.jsp" paramId="haha" paramName="name" name="myMap">Test</html:link>
生成的超链接为:
<a href="/Struts2/Test.jsp?password=1&amp;password=2&amp;password=3&amp;haha=I+am+a+boy%21&amp;name=bitiliu">Test</a>

10、<html:img>
生成图片标记,如<html:img page="/logo.gif"/>,生成的HTML为<img src="/web/logo.gif">
<html:img>也可以包含请求参数,可参考<html:link>

11、<html:cancel>
增加取消按钮,点击取消按钮也会请求form的action事件,可以在execute方法中通过方法isCancelled(request)来判断是否点击了取消按钮。

12、<html:hidden>
生成隐藏域,如<html:hidden property="name"/>,生成的HTML为<input type="hidden" name="name"/>

13、<html:checkbox property="check">
对应的Form中应该有一对应属性check类型为boolean

14、<html:multibox property="strArray" value="value1">
对应的Form中对应属性strArray类型为String

15、<html:radio property="strArray" value="value1">
同<html:multibox>,但为单选框

16、<html:select>
下拉选择框,可指定property、size和multiple(true\false),标签内可包含<html:option>、<html:options>和<html:optionCollections>

17、<html:option>
可写成:<html:option value="color.orange" key="color.orange"/>或<html:option value="color.orange">Orange</html:option>

18、<html:options>
一次生成多个option,使用示例:
Vector vec = new Vector();
vec.add(new org.apache.struts.util.LabelValueBean("label1","value1"));
vec.add(new org.apache.struts.util.LabelValueBean("label2","value2"));
pageContext.setAttribute("vec",vec);

<html:options collection="vec" property="value" labelProperty="label"/>

19、<html:file>
用于实现文件上传,其中<html:form>的enctype="multipart/form-date",Form的对应属性类型应为File类型,

逻辑判断标签:
1、<logic:equal>
相等,示例如下:
<logic:equal name="strValue" value="112" scope="request">equal</logic:equal>
标签从request中获得strValue对象,然后和112比较,如果相等,则输入字符串equal,否则不输出。下面标签相同。

2、<logic:greateEqual>
大于等于

3、<logic:greaterThan>
大于

4、<logic:lessEqual>
小于等于

5、<logic:lessThan>
小于

6、<logic:notEqual>
不等于

7、<logic:match>
指定的值是变量的子串

8、<logic:notMatch>
指定的值不是变量的子串

9、<logic:iterate>
叠代标签

其它:
1、在国际化文件中添加两个errors.header和errors.footer用于指定错误信息显示时前后追加的内容。


评论

# re: 再读struts  回复  更多评论   

2007-04-05 11:09 by guest
From bitiliu.bokee.com?

只有注册用户登录后才能发表评论。


网站导航: