webwork筆記之配置

  1. <package/>標籤裏,這幾個標籤是有嚴格順序的,正確順序如下:  
  2. <result-types>,必須有<result-type/>項;  
  3. <interceptors>,必須有<interceptor/>項;  
  4. 接下來是<default-interceptor-ref name="completeStack">default-interceptor-ref>;  
  5. 然後是<global-results>,必須有<result/>項;  
  6. 然後<global-exception-mappings>,子項如<exception-mapping result="errorPage" exception="java.lang.Exception"/>  
  7. 最後纔是<action/>  
  8. =========================================================================  
  9. <action name="test">  
  10.     <interceptor-ref name="exception"/>  
  11.     <interceptor-ref name="basicStack"/>  
  12.     <exception-mapping exception="com.acme.CustomException" result="custom_error"/>  
  13.     <result name="custom_error">custom_error.ftlresult>  
  14.     <result name="success" type="freemarker">test.ftlresult>  
  15. action>  
  16. =========================================================================  
  17. webwork運行流程:  
  18. 默認執行execute()方法,該方法默認返回SUCCESS;  
  19. =====分頁================================================================  
  20. <Script language="JavaScript" src="/js/pagenumber.js">Script>  
  21. <script Language="JavaScript">  
  22.     listNumUrl("courseInfoList.action?&pageNum=",${pageNum},${allPageNum});  
  23. script>  
  24. ======相關擴展===========================================================  
  25. Ognl工作原理:  
  26. OgnlValueStack stack=new OgnlValueStack();  
  27. stack.push(new User())://首先將打算賦值的對象壓入棧中  
  28. stack.setValue("name","erica");//爲棧頂對象User指定的屬性名name賦值  
  29. =====額外收穫===========================================================  
  30. HttpSession是一個接口,  
  31. Properties實現了繼承了HashTable(實現了Map接口),也就是說它保存的也是值-鍵對象,它的setProperty("name","value")實質上就是保存到HashTable裏了。  
  32. -------------------------------------------------------------------------------------------------  
  33. <ww:head theme="ajax" calendarcss="calendar-green"/>默認不是ajax  
  34. ======上傳=============================================================  
  35. <action name="itemPersonalInput" class="cn.com.s520.course.ItemPersonalInputAction">  
  36.         <interceptor-ref name="fileUpload">  
  37.         <param name="allowedTypes">  
  38.     application/msword,image/gif,image/jpeg,image/pjpeg,application/x-shockwave-flash  
  39.     param>  
  40.     <param name="maximumSize">10485760param>  
  41.     interceptor-ref>  
  42.         <interceptor-ref name="basicStack"/>  
  43.     <result name="input" type="freemarker">/course/ItemPersonalInput.ftlresult>  
  44.     <result name="error" type="freemarker">/course/ItemPersonalInput.ftlresult>  
  45.     <result name="success" type="redirect">/itemPersonalList.actionresult>  
  46. action>  
  47. private File images;  
  48. private String imagesContentType;  
  49. private String imagesFileName;//得到不含路徑的文件名,如test.jpg  
  50. ******文件下載=========================================================  
  51. <result name="success" type="stream">  
  52.     <param name="contentType">image/jpegparam>  
  53.     <param name="inputName">imageStreamparam>  
  54.     <param name="contentDisposition">filename="logo.png"param>  
  55.     <param name="bufferSize">4096param>  
  56. result>  
  57. 1,<param name="contentType">application/x-msdownloadparam>  
  58. contentType設成 application/x-msdownload 就可以。這樣瀏覽器會保證彈出一個下載文件的對話框。  
  59. 2,inputName 這個比較重要,這個名字是輸入流的名稱, 以後要steam result的實現類中爲根據OGNL的表達式去查找的。  
  60. contentDisposition 這個是下載之後,保存在用戶端的文件名稱  
  61. 3,另外一個參數:contentLength就是下載文件的大小,webwork的stream result似乎實現有問題,不能根據文件的大小動態進行設置,只能寫死。  
  62. 這個參數的意義是告訴瀏覽下載的文件有多大,以便瀏覽器正確的顯示進度條。如果這個功能很重要的話,可以重新寫一個RESULT來實現。  
  63. ======================================================================  
  64. <result>/form.jspresult>如果不指明,默認爲success  
  65. <action name="userReg" class="com.opensymphony.xwork.ActionSupport">  
  66.     <result name="input">/app/userreg.ftlresult>  
  67. action>  
  68. 這裏將不會出現預期的頁面,因爲默認爲success,不會轉向我們指定的input頁面  
  69. ======================================================================  
  70. <result name="no-content" type="header">  
  71.     <param name="status">204param>  
  72.     <param name="headers.customHeaderA">Aparam>  
  73.     <param name="headers.customHeaderB">Bparam>  
  74. result>  
  75. ======================================================================  
  76. chain視圖:  
  77. 同一個包裏,可設置type爲chain,對應action的擴展名也可以不寫,  
  78. <result name="error" type="chain">  
  79.       <param name="actionName">barparam>  
  80. result>  
  81. 不同包裏  
  82. <result name="errorPage" type="chain">  
  83.     <param name="namespace">/param>  
  84.     <param name="actionName">barparam>  
  85. result>  
  86. 或者設置type爲redirect,重定向過去  
  87. <action name="index" class="com.opensymphony.xwork.ActionSupport">  
  88.     <result name="success" type="redirect">/course/courseInfoList.actionresult>  
  89. action>  
  90. ======================================================================  
  91. <default-interceptor-ref name="defaultStack"/>  
  92. 這裏只是在你沒有設置攔截器時纔用到,如果設置攔截器了,就不會調用這個了,我開始還以爲設置沒設置攔截器都調用這個呢  
發佈了2 篇原創文章 · 獲贊 1 · 訪問量 4135
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章