MailReader-Struts1.3.8知識點分析
MailReader-Struts1.3.8知識點分析
本文分析MailReader案例用過的知識點。
l 巧妙使用redirect,實現(xiàn)繞過首頁不能是action的情況
Index.jsp文件里寫下面的內容
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <logic:redirect action="/Welcome"/> |
l 執(zhí)行action的固定函數(shù)
這就是Action類的execute方法
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { … } |
l Action的execute方法執(zhí)行完之后返回哪個頁面?
mapping.findForward(Constants.FAILURE); |
l 如何設置系統(tǒng)的本地化
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 如何實現(xiàn)服務端的驗證
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優(yōu)勢實現(xiàn)同一個類寫不同的execute方法
<action path="/Edit*" extends="http://BaseAction" parameter="Edit" validate="false" /> |
使用了parameter屬性,值為方法名稱。
l 避免同一個form提交2次
saveToken(request); |
這樣會在form里自動填入一個隱藏預
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="01797d3badabda8431adbfa84260dded" />
isTokenValid(request) |
驗證是否是有效的token
resetToken(request); |
重置token值
l 區(qū)分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元素獲得,參數(shù)名稱是host。
l 定義和使用多個配置文件
<message-resources parameter="com.yourcompany.struts.AlternateApplicationResources" key="alternate" /> |
<bean:message key="prompt.password" bundle="alternate"/> |
posted on 2008-07-06 22:59 MingIsMe 閱讀(116) 評論(0) 編輯 收藏 所屬分類: 16 案例分析