论坛首页 Java企业应用论坛

Webwork的参数传递问题

浏览 7969 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-09-06  
下面的代码:
Map parameters = ActionContext.getContext();.getParameters();;

假如我通过"GET"的方式向action传递一个参数, 例:example.do?url=192.168.0.1
在action中, parameters.get("url")返回的值是一个字符串数组, 而不是我期望的字符串"192.168.0.1", 请问这是怎么回事?
   发表时间:2005-09-06  
根据HTTP的规范,可以传递同名的参数,比如:
example.do?url=192.168.0.1&url=192.168.0.2
这样得到的就是一个数组

另外,在WebWork里面不大可能需要用getParameters()的方法去写代码,十有八九你没有理解WebWork的数据绑定的用途......
0 请登录后投票
   发表时间:2005-09-06  
是这样的, 我希望我的一个action可以接收不确定名称的参数, 我该怎么做?
0 请登录后投票
   发表时间:2005-09-06  
rockis 写道
是这样的, 我希望我的一个action可以接收不确定名称的参数, 我该怎么做?

用户需求是什么样的?描述清楚一些......
0 请登录后投票
   发表时间:2005-09-06  
抱歉, 是这样的. 其实这是一个很简单的功能. 我有一个action类:ExampleAction, 在xwork.xml里我把它映射成了两个上下文:example1.do, example2.do,这两个的需要传入的参数个数是不一样的, example1.do需要传入URL:example1.do?address=192.168.0.1, example2.do需要传入URL:example2.do?address=192.168.0.1&port=8080, 后期很有可能会把ExampleAction映射成example3.do, example4.do, 而不需要修改ExampleAction的代码, 也就是说, ExampleAction里面不需要做什么, 这几个*.do不同的只是返回结果页面. 这样就需要ExampleAction可以get和set不同的参数, 比如说example1的address参数, example2的port参数, 或许之后还有netmask参数等等
0 请登录后投票
   发表时间:2005-09-06  
试试看用一个Map对象,然后输入参数用这样:
example1.do?inputMap['address']=192.168.0.1&inputMap['port']=8080
xwork能够自动填充Map的值。

具体的写法查一下文档把
0 请登录后投票
   发表时间:2005-09-06  
Thanks for your help
0 请登录后投票
   发表时间:2005-09-06  
ActionContext.getContext().getParameters().get("xxx") 返回的确实是个String[],所以可以这样写
Object o = ActionContext.getContext();.getParameters();.get("userId");;
   if(o instanceof String[]);{
	String userId = ((String[]);o);[0];
}


so ugly...
0 请登录后投票
   发表时间:2005-09-07  
从你的需求上来看,我觉得根本用不到Map映射。你只要在你的Action中多写几个私有变量,暴露他们的get和set方法不就ok了?如果你只传了address,那么mask和其他的值都为null,如果你传了address和mask,那么其他的为null,至于你的Action代码,肯定是一并处理的。在业务逻辑判断就行了。
0 请登录后投票
   发表时间:2005-10-09  
楼上正解
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics