之參數(shù)傳遞

          Posted on 2006-12-27 14:35 閱讀(355) 評論(0)  編輯  收藏

          html:link有很多參數(shù)選項,如關(guān)鍵有:
          action --指定點擊鏈接后,進入的*.do動作action的值不需要跟后綴,struts自動補上.do
          page? -- 跟action一樣的功能,不過這個不會自動補.do,也就是說可以鏈接其他類型的動作,如html,jsp,php等

          paramId--指定參數(shù)的key名稱,如要輸出paramName -- 能識別作用域(任意)內(nèi)的Object的名稱。
          paramProperty--paramName的輸出屬性,paramId,paramName ,paramProperty可以組成單一參數(shù)傳遞的link,如<html:link? action="/PRC301E1"? paramId="prc_no" paramName="element" paramProperty="fjPrcNo">,當element.getfjPrcNo()的值為prc1時,則輸出為
          http://xxoo.com/PRC301E1.do?prc_no=prc1

          name--為HashMap屬性的對象,用此屬性,可以進行多參數(shù)輸出。例:

          CODE:
          [Copy to clipboard]
          ???? <%
          ??????? HashMap map=new HashMap();
          ?????? map.put("check","22");
          ?????? map.put("name","abc");
          ?????? pageContext.setAttribute("map",map); //因為所有tag的取值只會搜索作用域(page/request/session/application),而不會識別當前的實例,所以只有存入。
          ????? %>
          ????? <html:link action="/PRC301E1"? name="map">
          ??????? 多參數(shù)輸出
          ????? </html:link>

          -----------------------------------------------------------------------------------------

          在struts標簽<html:link>的page屬性指定的URI后面?zhèn)鬟f參數(shù)可以有幾種方式:

          1.若明確參數(shù)名和參數(shù)值則直接在URI后輸出,
          如:<html:link page="/test.do?action=add">add</html:link>

          2.對于參數(shù)值不確定的,paramName和paramProperty來輸出,用paramId屬性指定參數(shù)名。
          對于paramName指定的對象應(yīng)該存在于page、request、session、application其中之一。一般來說,是從Action類傳過來的,作為request的屬性之一(requst.setAttribute("name",object))。
          如果paramName指定的對象是action的ActionForm,則無需使用request.setAttribute方法。
          例:<html:link page="/test.do" paramId="userid" paramName="uid">uname</html:link>
          若參數(shù)值是一個bean對象的屬性值(比如ActionForm,或者集合中存放的對象)則:
          <html:link page="/test.do" paramId="userid" paramName="user" paramProperty="uid">uname</html:link>

          3.若兩個參數(shù),一個確定一個不確定,則是以上兩種方法的結(jié)合,即:
          <html:link page="/test.do?action=modify" paramId="userid" paramName="uid">modify</html:link>

          4.對于多個參數(shù)的問題,可以使用一個HashMap集合對象來存放所有的參數(shù)名及對應(yīng)的參數(shù)值的方式,paramName屬性值指定為該HashMap集合對象即可。
          舉例:
          <%
          //代碼理想的位置應(yīng)該是在action中
          //可以在jsp頁面測試
          ? java.util.HashMap pms = new java.util.HashMap();
          ? pms.put("code", "001002");
          ? pms.put("name", "tester");
          ? pms.put("alias", new String[]{"matin","jack"});
          ? request.setAttribute("params", pms);
          %>
          <html:link action="/test.do" name="params" >test</html:link>
          編譯后的結(jié)果:<a href="/test.do?code=001002&name=tester&alias=matin&alias=jack">test</a>
          這種方式雖然可以解決傳多參數(shù)的問題,但是實現(xiàn)起來也比較麻煩,特別是對記錄集中的數(shù)據(jù)逐條列出的時候

          5.針對有的網(wǎng)友在<html:link>標簽中嵌入使用jsp腳本(scriptlet)的問題,
          例如:
          <html:link page="/test.do?code=<%=varible%>">add</html:link>,這種寫法是錯誤的,是無法編譯的。
          有的網(wǎng)友認為在struts標簽內(nèi)是不允許使用jsp腳本的,這種說法也不準確。如果前面的寫法改成:
          <html:link page="<%="/test.do?code="+varible%>">add</html:link>,就可以被執(zhí)行,但是要注意URL相對路徑的問題。

          雖然在struts標簽中嵌入jsp腳本不是真正意義上的struts應(yīng)用,但是有時在委曲求全的情況下也只能如此了,除非使用自定義標簽。比如在form表單中可能需要根據(jù)具體數(shù)據(jù)讓某個字段是只讀的,就可以用嵌入jsp腳本來實現(xiàn):
          <%
          boolean rdonly=false;
          if(2==2) rdonly=true;
          %>
          <html:text property="userid" readonly="<%=rdonly%>" />

          6.另外一種比較變態(tài)的方法,既不是真正意義上的struts,也不符合xml規(guī)范。那就是在<a>標簽中用<bean:write>標簽輸出參數(shù)值。
          如:<a href="test.do?uid=<bean:write name="user" property="userid"/>&name=<bean:write name="user" property="username"/>">test</a>


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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 莎车县| 台安县| 天柱县| 锦州市| 柘荣县| 沁阳市| 通化市| 万州区| 诸暨市| 襄樊市| 巩留县| 宁津县| 始兴县| 凉城县| 吴桥县| 威海市| 开封县| 青阳县| 扶沟县| 日照市| 卓资县| 乌鲁木齐市| 和平区| 潮州市| 荥阳市| 中宁县| 广元市| 黑龙江省| 焉耆| 商丘市| 淮北市| 瓮安县| 涡阳县| 汉源县| 彰化市| 闽清县| 宜阳县| 乐业县| 龙川县| 湟源县| SHOW|