龍行天下

            政 博
          隨筆 - 23, 文章 - 0, 評(píng)論 - 12, 引用 - 0
          數(shù)據(jù)加載中……

          struts在URI后面?zhèn)鲄?shù)的問(wèn)題

          在struts標(biāo)簽<html:link>的page屬性指定的URI后面?zhèn)鬟f參數(shù)可以有幾種方式:
          1.若明確參數(shù)名和參數(shù)值則直接在URI后輸出,
          如:<html:link page="/test.do?action=add">add</html:link>

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

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

          4.對(duì)于多個(gè)參數(shù)的問(wèn)題,可以使用一個(gè)HashMap集合對(duì)象來(lái)存放所有的參數(shù)名及對(duì)應(yīng)的參數(shù)值的方式,paramName屬性值指定為該HashMap集合對(duì)象即可。
          舉例:
          <%
          //代碼理想的位置應(yīng)該是在action中
          //可以在jsp頁(yè)面測(cè)試
          ? 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ù)的問(wèn)題,但是實(shí)現(xiàn)起來(lái)也比較麻煩,特別是對(duì)記錄集中的數(shù)據(jù)逐條列出的時(shí)候

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

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


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

          posted on 2006-05-03 20:02 feingto 閱讀(888) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java Web

          主站蜘蛛池模板: 文昌市| 陇川县| 油尖旺区| 犍为县| 海原县| 广丰县| 长春市| 林甸县| 铜梁县| 鲁甸县| 云林县| 邳州市| 广水市| 胶州市| 弋阳县| 长岭县| 外汇| 南江县| 渝北区| 浦县| 祁门县| 金湖县| 桃园市| 西充县| 卓资县| 弥渡县| 宁阳县| 九龙城区| 万宁市| 鄂托克前旗| 洛扎县| 上饶市| 都江堰市| 宝山区| 内黄县| 西林县| 甘谷县| 普洱| 浮山县| 凌源市| 准格尔旗|