struts学习<html:link>标签传递参数
来源:互联网 发布:淘宝网男士休闲直筒裤 编辑:程序博客网 时间:2024/06/18 03:48
struts学习<html:link>标签传递参数
在struts标签<html:link>的page属性指定的URI后面传递参数可以有几种方式:
1.若明确参数名和参数值则直接在URI后输出,
如:<html:link page="/test.do?action=add">add</html:link>
2.a:对于参数值不确定的,使用paramName和paramProperty来输出,用paramId属性指定参数名。
对于paramName指定的对象,应该存在于page、request、session、application其中之一的。一般来说,是从前一个Action传过来的,譬如:作为request的属性之一(requst.setAttribute("name",object))。
如果paramName指定的对象是action的ActionForm,则action中无需使用类似request.setAttribute方法。
例:<html:link page="/test.do" paramId="userid" paramName="userID">uname</html:link>
注意:这里的paramName="userID"中的paramName必须存在于page、request、session、application其中之一,假定你在前一个Action中session.setAttribute("userID",object)。
b:若参数值是一个bean对象的属性值,或者集合容器中存放的对象(比如ActionForm)则:
<html:link page="/test.do" paramId="userid" paramName="userform" paramProperty="userid">uname</html:link>
同样的,名为userform的bean或者其他集合容器必须存在于page、request、session、application其中之一,paramProperty输出userform的userid属性值
3.若两个参数,一个确定一个不确定,则是以上两种方法的结合,即:
<html:link page="/test.do?action=modify" paramId="userid" paramName="uid">modify</html:link>
4.对于多个参数的问题,可以使用一个HashMap集合对象来存放所有的参数名及对应的参数值的方式,paramName属性值指定为该HashMap集合对象即可。
举例:
<%
//代码理想的位置应该是在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>
编译后的结果:<a href="/test.do?code=001002&name=tester&alias=matin&alias=jack">test</a>
这种方式虽然可以解决传多参数的问题,但是实现起来也比较麻烦,特别是对记录集中的数据逐条列出的时候
5.在<html:link>标签中嵌入使用jsp脚本(scriptlet)的问题,
例如:
<html:link page="/test.do?code=<%=varible%>">add</html:link>,这种写法是错误的,是无法编译的。
有的人认为在struts标签内是不允许使用jsp脚本的,这种说法也不准确。如果前面的写法改成:
<html:link page="<%="/test.do?code=" varible%>">add</html:link>,就可以被执行,但是要注意URL相对路径的问题。
虽然在struts标签中嵌入jsp脚本不是真正意义上的struts应用,但是有时在委曲求全的情况下也只能如此了,除非使用自定义标签。比如在form表单中可能需要根据具体数据让某个字段是只读的,就可以用嵌入jsp脚本来实现:
<%
boolean rdonly=false;
if(2==2) rdonly=true;
%>
<html:text property="userid" readonly="<%=rdonly%>" />
6.另外一种比较变态的方法,既不是真正意义上的struts,也不符合xml规范。那就是在<a>标签中用<bean:write>标签输出参数值。
struts标签如果嵌套<html:form action="test.do?uid=<bean:write name="user" property="userid"/>">test</html:form>解析的时候语法就是错的。
如:<a href="test.do?uid=<bean:write name="user" property="userid"/>&name=<bean:write name="user" property="username"/>">test</a>这样是可行的,但不提倡。
讲到底,最好的办法是在ActionForm里增加一个属性是容器类型的,同样的具有get和set方法,用来存放一些凌乱的东西,譬如可能要传递的参数等等,jsp中使用的时候方法参见2的b或者4,操作时候在action中用form来存取相关数据。
你可以通过这个链接引用该篇文章:http://gx2004it.bokee.com/viewdiary.39523846.html
- struts学习<html:link>标签传递参数
- Struts标签 - html - link
- Struts源码研究 - html-Link标签篇
- Struts源码研究 - html-Link标签篇
- Struts源码研究 - html-Link标签篇
- Struts源码研究 - html-Link标签篇
- Struts源码研究 - html-Link标签篇
- Struts -- html:link 标签的使用
- Struts -- html:link 标签的使用(转)
- 用html:link传递多个参数
- struts标签-参数传递测试(二)
- struts中submit标签传递参数问题
- 页面之间参数传递2--Struts标签
- Struts源码研究 - html-Link标签篇[转载]
- Struts源码研究 - html-Link标签篇 --转
- (转)Struts -- html:link 标签的使用
- (转)Struts -- html:link 标签的使用
- (转)Struts -- html:link 标签的使用
- C++标准转换运算符const_cast
- C语言中time函数
- android Activity的生命周期于四种加载状态
- 【Android Training - 04】保存数据 [ Lesson 0 - 章节概览 ]
- Flex TLF 分页代码
- struts学习<html:link>标签传递参数
- VS2010连接mysql数据库
- ubuntu获得root权限
- 共享内容使用到的ftok()
- 组合和聚合的区别和联系
- mysql mysqlbinlog的使用
- mysql的僵死进程导致不能启动mysql
- JMS 入门
- MyEclipse6.5安装SVN插件(离线安装)