看了一些使用html:link的文章,大多隻是說了paramId結合paramName和paramProperty的使用。下面將會用到name,paramId,paramName和paramProperty一起使用的效果。
首先是先解釋簡單的應用paramId,paramName和paramProperty
<html:link action="/atctionName" paramId="paramValue" paramName="beanName" paramProperty="beanProperty" >點擊鏈接</html:link>
假設在scope範圍中,有一個bean叫beanName,beanName的一個屬性beanProperty的值爲value,那麼當你點擊鏈接之後會有下面的鏈接效果:
http://localhost:8080/projectName/atcionName?paramValue=value
paramId屬性是讓你告訴jsp編譯引擎你要傳送的參數是那個。
paramName屬性是使用那個bean,paramProperty屬性是使用這個bean的那個屬性,兩者的結合就是讓你告訴jsp編譯引擎你要利用參數傳送bean中屬性的值.
上面只可以傳送一個參數,但在應用中往往不夠的,name屬性就是專門用來傳送多個參數的。
name屬性必須是map類型的變量。
假設如果你定義下面的一個map:
Map mapName=new HashMap();
mapName.put("paramValue1","value1");
mapName.put("paramValue2","value2");
request.setAttribute("mapName",mapName);
在jsp頁面有下面的一個鏈接:
<html:link action="/atctionName" name="mapName">點擊鏈接</html:link>
點擊鏈接後的效果:
http://localhost:8080/projectName/atcionName?paramValue1=value1¶mValue2=value2
當我在一次實踐中,聯想了一下,當解析tag時應該會解析全部所用到的屬性,所以就做了下面的一個測試,
下面是一個四個屬性一起使用的例子:
<html:link action="/atctionName" name="mapName" paramId="paramValue" paramName="beanName" paramProperty="beanProperty" >點擊鏈接</html:link>
得到的效果是:
http://localhost:8080/projectName/atcionName?paramValue1=value1¶mValue2=value2¶mValue=value
所有屬性的值都解析出來了。
這樣的效果可以用在你想一級一級的推論下去達到的鏈接效果。也就是說,當你提交之後,你可以把
paramValue的值put進mapName的Map中,再返回,用在name屬性上。當你想返回上面一級的時候可以
remove掉。或者當你的參數存放的是數據庫中多個表格的級聯主健,當你想向後查詢上級表格時你就可以直接拿到主健進行查詢,不用一級一級向數據庫往回查詢推出主健。