Studying Java......

          統(tǒng)計(jì)

          留言簿(1)

          積分與排名

          JavaServerFaces

          Mail Link

          Open Source

          友情鏈接

          收藏的鏈接

          閱讀排行榜

          評(píng)論排行榜

          利用函數(shù)computeURL( )實(shí)現(xiàn)同一FORM的多動(dòng)作提交

                 在實(shí)際處理的頁(yè)面中,往往在一個(gè)頁(yè)面中有多個(gè)觸發(fā)的動(dòng)作,而Struts的ActionForm中只能指定一個(gè)Action,是一種粗粒度的實(shí)現(xiàn)(JSF中有更好的解決方案),computeURL( )可以提供一種變通的解決方法.
                 computeURL( )是在org.apache.struts.util.RequestUtils(Struts Ver1.1)與org.apache.struts.taglib.TagUtils(Struts Ver1.2)類(lèi)中的一個(gè)函數(shù),用來(lái)解析基于Forward,Action,鏈接,頁(yè)面參數(shù)的URL可以用來(lái)動(dòng)態(tài)改變頁(yè)面中Form對(duì)應(yīng)的Action.Ver1.1中有以下兩種:
          1.computeURL(javax.servlet.jsp.PageContext pageContext, java.lang.String forward, java.lang.String href, java.lang.String page, java.util.Map params, java.lang.String anchor, boolean redirect)
          2.computeURL(javax.servlet.jsp.PageContext pageContext, java.lang.String forward, java.lang.String href, java.lang.String page, java.lang.String action, java.util.Map params, java.lang.String anchor, boolean redirect)
          其中第一個(gè)是  Deprecated.第二個(gè)在新版本中得以保留,另外還提供了另外一種重載:
          computeURL(javax.servlet.jsp.PageContext pageContext, java.lang.String forward, java.lang.String href, java.lang.String page, java.lang.String action, java.lang.String module, java.util.Map params, java.lang.String anchor, boolean redirect, boolean encodeSeparator) 
          參數(shù)說(shuō)明如下:
          Parameters:
          pageContext - PageContext for the tag making this call
          forward - Logical forward name for which to look up the context-relative URI (if specified)
          href - URL to be utilized unmodified (if specified)
          page - Module-relative page for which a URL should be created (if specified)
          action - Logical action name for which to look up the context-relative URI (if specified)
          params - Map of parameters to be dynamically included (if any)
          anchor - Anchor to be dynamically included (if any)
          redirect - Is this URL for a response.sendRedirect(

          下面介紹一下詳細(xì)的使用方法:
          1.在JSP頁(yè)面中導(dǎo)入對(duì)應(yīng)的包:
          <%@ page import= "org.apache.struts.util.RequestUtils"%>

          <%@ page import= "org.apache.struts.taglib.TagUtils"%>
          2.創(chuàng)建一個(gè)JAVASCRIPT函數(shù):
          <script language="JavaScript" type="text/javascript">
          function search() {
           <%String searchUrl = RequestUtils.computeURL(
             pageContext,
             null,
             null,
             "/Search.do",
             null,
             null,
             null,
             false);
           %>
             
           document.form1.action = "<%=searchUrl%>";
           document.form1.submit();  
          }
          </script>
          3.在JSP頁(yè)面中給對(duì)應(yīng)的表單指定ID以便上面的函數(shù)進(jìn)行確定提交的是哪個(gè)FORM(如果一個(gè)頁(yè)面在存在多個(gè)FORM的話(huà)):
          <html:form styleId="form1" action="/aotherSearch">
          .........
          </html:form>
          4.在需要觸發(fā)提交動(dòng)作的地方,調(diào)用2中的JAVASCRIPT函數(shù):
          <html:button property="searchInfo" value="檢索" onclick="search()" style="width:100px" />

          對(duì)應(yīng)的ACTION與FORM在配置文件中定義.這樣,就可以動(dòng)態(tài)更改FORM的ACTION實(shí)現(xiàn)一個(gè)FORM對(duì)應(yīng)多個(gè)ACTION了.

          posted on 2005-11-24 11:29 Terence 閱讀(1631) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): STRUTS

          評(píng)論

          # re: 利用函數(shù)computeURL( )實(shí)現(xiàn)同一FORM的多動(dòng)作提交 2005-11-27 13:22 DenisLing

          果然是個(gè)好方法!我以前的做法仿照了HtmlTag.java里面的做法提取了真正的action路徑,然后自己寫(xiě)了個(gè)taglib來(lái)實(shí)現(xiàn)的!麻煩多了  回復(fù)  更多評(píng)論   

          # re: 利用函數(shù)computeURL( )實(shí)現(xiàn)同一FORM的多動(dòng)作提交 2005-11-29 11:02 IBM

          用js不是也可以隨時(shí)改變嗎?
          根據(jù)傳入js的參數(shù)來(lái)決定form的action的地址是哪一個(gè)~  回復(fù)  更多評(píng)論   


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乾安县| 合作市| 望城县| 辛集市| 临潭县| 肃宁县| 通城县| 遂宁市| 沂源县| 无棣县| 宜章县| 蓬安县| 论坛| 水城县| 广州市| 济南市| 芦溪县| 赤城县| 蒙自县| 永兴县| 锡林浩特市| 瑞昌市| 丰城市| 台东县| 常德市| 二手房| 沈丘县| 佛坪县| 杭锦后旗| 西贡区| 金寨县| 彭州市| 台中县| 通化市| 廉江市| 毕节市| 镇康县| 伊吾县| 法库县| 舒兰市| 化德县|