作者:Flyingis
Struts标签提供了大部分应用来满足创建MVC架构表现页面的所有功能。在一个MVC应用中,请求并不是直接到达表现页面,而是首先经过控制器,仅当业务数据被获取,并且业务规则被应用后,控制器才处理表现页面。页面的职责就是输出结果和捕获用户输入,Struts标签的功能目的就在于此。
虽说Struts标签库能满足我们大多数情况下的需要,但不是唯一可用的标签,例如JSTL标签、DisplayTag等等。Struts标签和其他各种标签的基本使用方法在各种书本上都有介绍,这里总结一下标签使用中的个人体会,并不断更新。
1. Struts中包含三个标签库,Bean、HTML和Logic,其中HTML标签库依赖于框架,其他大部分标签不依赖于框架,可以在其他应用中使用。
2. Struts HTML标签和一般HTML标签具有一定的对应关系,但也存在一点不同。使用Scriptlet的HTML标签需要在使用前在页面中将Form Bean声明为一个脚本变量,Struts标签则不需要声明就能找到该Bean。在默认情况下,Struts标签将对剩下的表单使用同一个Bean,所以不需要对每一个控件都进行指定。例如:
<input type=“text” name=“username” value=“<%=user.getUsername()%>”/>
使用Struts HTML标签
<html:text property=“username”>
3. Struts HTML标签和一般HTML标签具有一定的对应关系,但存在几个特例,在Struts HTML标签中,Messages / errors / rewrite分别用来表示显示一组消息、显示一组错误消息、输出一个编码的URL路径,而这些在一般HTML标签中就不存在。
4. HTML有时需要处理特殊的字符,包括标签的括号、&符号以及其他的内容,如果这些字符作为文本字段的一部分,可能会出现错误并造成HTML崩溃。如果确实需要在数据中存储这些字符,可以在网页中进行设置,使得这些字符不被页面过滤成为特殊字符,例如:
<bean:write name=“UserForm” property=“username” filter=“false”/>
5. 使用<html:password>时,如果页面校验错误,password属性将从Form Bean中读回,并放置在password标签中。虽然密码会被浏览器用符号隐藏,但在HTML源代码中仍然可以看到,存在安全上的隐患,因此可以在标签中加入redisplay=false来保证password总是以空白状态显示给用户。
6. 提供一个Javascript的返回按钮,可以定义一个没有属性的简单表单,Struts配置文件:
<action path=“/adduser”
type=“org.apache.struts.ForwardAction”
name=“BlankForm”
scope=“request”
validate=“false”
parameter=“/user.do”>
JSP页面:
<html:form action=“/adduser”>
<html:button property=“page” onClick=“history.go(-1)”>here</html:button>
</html:form>