java-webwork:参数传递问题

本问题出现在用一个action实现CRUD的设计里:

xwork.xml:

        <!-- Assets-Location crud function start here  -->
        <action name="ast_loc_service" class="com.hwccl.assets.system.action.LocationAction" method="list" >
            <result name="success">/web/assets/system/locations.jsp</result>
            <result name="error">/web/users/error.jsp</result>
            <interceptor-ref name="cookieStatck"/>
        </action>
        <action name="ast_loc_crud" class="com.hwccl.assets.system.action.LocationAction" method="input">
            <result name="success" type="redirect-action">ast_loc_service</result>
            <result name="input">/web/assets/system/locationForm.jsp</result>
            <result name="error">/web/users/error.jsp</result>
            
        </action>   

测试时,发现
http://localhost:8080/oa_hwccl/ast_loc_crud!input.action?location.id=1
参数传递失败,无法获得参数。

后来看到以下文字:
http://jxb8901.javaeye.com/blog/6103


在XWork中,它是OgnlValueStack)。当你提交一个表单到action中,在它执行之前,由框架去取得你的Action,并实例化这个Action对象,再将这个Action对象放入它的值堆栈中。
这时候,你在做编辑的时候,它一定会有原始的数据,假设这个数据对象就是user,同时假设这个数据就是从数据库中取得的。
你要编辑这个user对象的数据,当然你的视图(也许是页面)要获取原始的数据。如何获取?你可以通过EL(表达式语言)从OgnlValueStack 中获取。你的EL:user.username,它就是相当于调用Action对象的getUser().getUsername();方法。通过这种方 式,你可以在视图中取得原始数据。
到这里,我想你都能明白。但请注意下面:
在你对原始数据进行更新时,你希望这个更新的数据同步到user对象中。这时,你仍然是通过EL,进行值的设置(注意:前面是值的获取)。你的EL:user.username,它这是相当于调用代码:getUse.setUsername(你更新的值)。


原来自己在action里定义了对象location,却没为他做getter and setter,所以getLocation().getId()无法生效。

添加getter and setter后OK。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值