- <package/>標籤裏,這幾個標籤是有嚴格順序的,正確順序如下:
- 先<result-types>,必須有<result-type/>項;
- 再<interceptors>,必須有<interceptor/>項;
- 接下來是<default-interceptor-ref name="completeStack">default-interceptor-ref>;
- 然後是<global-results>,必須有<result/>項;
- 然後<global-exception-mappings>,子項如<exception-mapping result="errorPage" exception="java.lang.Exception"/>
- 最後纔是<action/>
- =========================================================================
- <action name="test">
- <interceptor-ref name="exception"/>
- <interceptor-ref name="basicStack"/>
- <exception-mapping exception="com.acme.CustomException" result="custom_error"/>
- <result name="custom_error">custom_error.ftlresult>
- <result name="success" type="freemarker">test.ftlresult>
- action>
- =========================================================================
- webwork運行流程:
- 默認執行execute()方法,該方法默認返回SUCCESS;
- =====分頁================================================================
- <Script language="JavaScript" src="/js/pagenumber.js">Script>
- <script Language="JavaScript">
- listNumUrl("courseInfoList.action?&pageNum=",${pageNum},${allPageNum});
- script>
- ======相關擴展===========================================================
- Ognl工作原理:
- OgnlValueStack stack=new OgnlValueStack();
- stack.push(new User())://首先將打算賦值的對象壓入棧中
- stack.setValue("name","erica");//爲棧頂對象User指定的屬性名name賦值
- =====額外收穫===========================================================
- HttpSession是一個接口,
- Properties實現了繼承了HashTable(實現了Map接口),也就是說它保存的也是值-鍵對象,它的setProperty("name","value")實質上就是保存到HashTable裏了。
- -------------------------------------------------------------------------------------------------
- <ww:head theme="ajax" calendarcss="calendar-green"/>默認不是ajax
- ======上傳=============================================================
- <action name="itemPersonalInput" class="cn.com.s520.course.ItemPersonalInputAction">
- <interceptor-ref name="fileUpload">
- <param name="allowedTypes">
- application/msword,image/gif,image/jpeg,image/pjpeg,application/x-shockwave-flash
- param>
- <param name="maximumSize">10485760param>
- interceptor-ref>
- <interceptor-ref name="basicStack"/>
- <result name="input" type="freemarker">/course/ItemPersonalInput.ftlresult>
- <result name="error" type="freemarker">/course/ItemPersonalInput.ftlresult>
- <result name="success" type="redirect">/itemPersonalList.actionresult>
- action>
- private File images;
- private String imagesContentType;
- private String imagesFileName;//得到不含路徑的文件名,如test.jpg
- ******文件下載=========================================================
- <result name="success" type="stream">
- <param name="contentType">image/jpegparam>
- <param name="inputName">imageStreamparam>
- <param name="contentDisposition">filename="logo.png"param>
- <param name="bufferSize">4096param>
- result>
- 1,<param name="contentType">application/x-msdownloadparam>
- contentType設成 application/x-msdownload 就可以。這樣瀏覽器會保證彈出一個下載文件的對話框。
- 2,inputName 這個比較重要,這個名字是輸入流的名稱, 以後要steam result的實現類中爲根據OGNL的表達式去查找的。
- contentDisposition 這個是下載之後,保存在用戶端的文件名稱
- 3,另外一個參數:contentLength就是下載文件的大小,webwork的stream result似乎實現有問題,不能根據文件的大小動態進行設置,只能寫死。
- 這個參數的意義是告訴瀏覽下載的文件有多大,以便瀏覽器正確的顯示進度條。如果這個功能很重要的話,可以重新寫一個RESULT來實現。
- ======================================================================
- <result>/form.jspresult>如果不指明,默認爲success
- <action name="userReg" class="com.opensymphony.xwork.ActionSupport">
- <result name="input">/app/userreg.ftlresult>
- action>
- 這裏將不會出現預期的頁面,因爲默認爲success,不會轉向我們指定的input頁面
- ======================================================================
- <result name="no-content" type="header">
- <param name="status">204param>
- <param name="headers.customHeaderA">Aparam>
- <param name="headers.customHeaderB">Bparam>
- result>
- ======================================================================
- chain視圖:
- 同一個包裏,可設置type爲chain,對應action的擴展名也可以不寫,
- <result name="error" type="chain">
- <param name="actionName">barparam>
- result>
- 不同包裏
- <result name="errorPage" type="chain">
- <param name="namespace">/param>
- <param name="actionName">barparam>
- result>
- 或者設置type爲redirect,重定向過去
- <action name="index" class="com.opensymphony.xwork.ActionSupport">
- <result name="success" type="redirect">/course/courseInfoList.actionresult>
- action>
- ======================================================================
- <default-interceptor-ref name="defaultStack"/>
- 這裏只是在你沒有設置攔截器時纔用到,如果設置攔截器了,就不會調用這個了,我開始還以爲設置沒設置攔截器都調用這個呢
webwork筆記之配置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.