Atea - Hero's Grave

          面向?qū)ο螅_(kāi)源,框架,敏捷,云計(jì)算,NoSQL,商業(yè)智能,編程思想。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            40 隨筆 :: 0 文章 :: 28 評(píng)論 :: 0 Trackbacks
          筆者近期正在使用Struts2開(kāi)發(fā),在這里把個(gè)人心得小結(jié)一下。

          1.重復(fù)提交問(wèn)題。
          使用<s:token />標(biāo)簽。但這并不足夠。當(dāng)一個(gè)submit需要花費(fèi)大量時(shí)間的時(shí)候(例如CRUD),頁(yè)面會(huì)暫時(shí)無(wú)法轉(zhuǎn)向,這時(shí)如果狂點(diǎn)按鈕的話仍然可以進(jìn)行重復(fù)提交。
          所以正確的作法應(yīng)該是前后臺(tái)都要有所控制:
           • 使用<s:token />
           • 使用js控制:<form onsubmit="this.submit.disabled='true';">

          2.在web page中使用for循環(huán)的問(wèn)題。
          <s:bean name="org.apache.struts2.util.Counter">           
            <s:param name="last" value="***" />
            <s:iterator>
              do sth..
           
          </s:iterator>
          </s:bean>                           
          這是一個(gè)很好用的bean,但要注意的是參數(shù)last一定要傳對(duì)。如果設(shè)錯(cuò)了的話(比如空值),等待你的將是一個(gè)死循環(huán)..
          PS:其實(shí),在視圖層應(yīng)盡量避免使用循環(huán)等復(fù)雜邏輯,最好在后臺(tái)封裝好了拿上來(lái)直接顯示。

          3. 數(shù)據(jù)的頁(yè)面顯示問(wèn)題。
          為保持用戶的輸入與頁(yè)面顯示的一致,可能要對(duì)空格等做特殊處理:
          str = str.replaceAll(" ","&nbsp;");
          然后使用標(biāo)簽(注意escape):
          <s:property value="***" escape="false" />
          還有一種方法就是后臺(tái)不做任何轉(zhuǎn)換,把原始數(shù)據(jù)附給js在前臺(tái)轉(zhuǎn)換。具體哪種方法好就要細(xì)細(xì)權(quán)衡了。

          4.自定義interceptor的問(wèn)題。
          Struts2默認(rèn)每個(gè)Action都會(huì)自動(dòng)調(diào)用defaultStack interceptor(def in struts-default.xml)。但如果你自定義了interceptor,defaultStack將不再被自動(dòng)調(diào)用。
          想和頁(yè)面做交互的話最好還是加上它:
          <interceptor-stack name="Test_InterceptorStack">
            
          <interceptor-ref name="Test_Interceptor"/>
            
          <interceptor-ref name="defaultStack"/>
          </interceptor-stack>

          好了,就先到這里了。以后有新的話再補(bǔ)充:>
          posted on 2008-08-04 17:47 Atea 閱讀(3311) 評(píng)論(7)  編輯  收藏 所屬分類: Struts

          評(píng)論

          # re: Struts2使用小結(jié) 2008-08-05 09:04 YYX
          str = str.replaceAll(" ","&nbsp;");
          這個(gè)情況用replace()即可,這兩個(gè)方法容易望文生義,理解容易有偏差  回復(fù)  更多評(píng)論
            

          # re: Struts2使用小結(jié) 2008-08-05 10:58 123
          汗,果然是小節(jié)啊.
          相當(dāng)?shù)男?
          呵呵.  回復(fù)  更多評(píng)論
            

          # re: Struts2使用小結(jié) 2008-08-05 13:44 Happy漫步者
          呵呵 贊一個(gè)  回復(fù)  更多評(píng)論
            

          # re: Struts2使用小結(jié) 2008-08-05 16:46 Atea
          @YYX
          的確,應(yīng)該用replace
          @123
          嗯,有些東西別人寫(xiě)過(guò)了我就不寫(xiě)啦:>
            回復(fù)  更多評(píng)論
            

          # re: Struts2使用小結(jié)[未登錄](méi) 2008-08-05 23:57 alex
          str = str.replaceAll(" ","&nbsp;");
          這個(gè)情況用replace()即可
          ----------------
          不是吧replace 只對(duì)字串操作不對(duì)字串操作  回復(fù)  更多評(píng)論
            

          # re: Struts2使用小結(jié) 2008-09-01 21:05
          有什么學(xué)習(xí)struts2好的資料,推薦一下啊  回復(fù)  更多評(píng)論
            

          # re: Struts2使用小結(jié)[未登錄](méi) 2008-09-04 08:32 Atea
          @豬
          官方文檔、各種blog;
          get_ready_for_struts2.chm,startingstruts2online.pdf,Struts 2 in Action.pdf.  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 孝感市| 英吉沙县| 宜昌市| 濮阳县| 灵丘县| 荥经县| 宝山区| 鲁甸县| 定州市| 长海县| 建湖县| 柘荣县| 晋宁县| 商洛市| 囊谦县| 伊春市| 临海市| 木兰县| 宜丰县| 淮北市| 汉沽区| 廊坊市| 和静县| 芒康县| 广昌县| 沈阳市| 江达县| 江西省| 托克逊县| 武陟县| 武安市| 昭通市| 丽水市| 河池市| 张家港市| 宝兴县| 孟村| 东光县| 方正县| 福建省| 安阳市|