java-webwork:参数传递问题

来源:互联网 发布:手机淘宝查看信用等级 编辑:程序博客网 时间:2024/06/01 21:08
本问题出现在用一个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。
原创粉丝点击