MailReader-Struts1.3.8知识点分析
本文分析MailReader案例用过的知识点。
l 巧妙使用redirect,实现绕过首页不能是action的情况
Index.jsp文件里写下面的内容
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<logic:redirect action="/Welcome"/>
|
l 执行action的固定函数
这就是Action类的execute方法
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
…
}
|
l Action的execute方法执行完之后返回哪个页面?
mapping.findForward(Constants.FAILURE);
|
l 如何设置系统的本地化
session.setAttribute(Globals.LOCALE_KEY, locale);
|
l 如何让页面收集验证的错误信息
ActionMessages errors = new ActionMessages();
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"error.database.missing"));
this.saveErrors(request, errors);
|
这样在<html:errors/>里就能显示错误信息了
l 如何实现服务端的验证
ActionForm继承自org.apache.struts.validator.DynaValidatorForm类
并且在validator配置文件里定义对此form的验证
l 如何加上客户端的验证的验证
<html:form action="/SubmitLogon" focus="username"
onsubmit="return validateLogonForm(this);">
…
<html:javascript formName="LogonForm"
dynamicJavascript="true"
staticJavascript="false"/>
<script>
<html:javascript
dynamicJavascript="false"
staticJavascript="true"/>
</script>
|
l 利用MappingDispatchAction优势实现同一个类写不同的execute方法
<action path="/Edit*" extends="//BaseAction" parameter="Edit"
validate="false" />
|
使用了parameter属性,值为方法名称。
l 避免同一个form提交2次
这样会在form里自动填入一个隐藏预
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="01797d3badabda8431adbfa84260dded" />
验证是否是有效的token
重置token值
l 区分Create还是Edit
<html:hidden property="task"/>
|
使用此formbean属性,默认Create,否则Edit
l 从DynaValidateForm中获取值/设置值
initial = (String) PropertyUtils.getSimpleProperty(form, property);
|
DynaActionForm dyna = (DynaActionForm) form;
dyna.set(property, value);
|
l 迭代显示一个集合
<logic:iterate name="user" property="subscriptions" id="subscription">
|
User是上下文里的一个变量
Subscriptions是User上下文变量的一个集合属性
Id代表集合的其中一个元素
l 编辑和删除的做法
<html:link action="/DeleteSubscription"
paramName="subscription" paramId="host"
paramProperty="host">
<bean:message key="registration.deleteSubscription"/>
</html:link>
|
这里paraXXX和上面迭代显示一个集合的属性类似
Host值从subscription元素获得,参数名称是host。
l 定义和使用多个配置文件
<message-resources
parameter="com.yourcompany.struts.AlternateApplicationResources"
key="alternate" />
|
<bean:message key="prompt.password" bundle="alternate"/>
|