看了一些使用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掉。或者当你的参数存放的是数据库中多个表格的级联主健,当你想向后查询上级表格时你就可以直接拿到主健进行查询,不用一级一级向数据库往回查询推出主健。