webx-参数注入

(1)分类

              参数注入分为两种:

              1.作为类的属性注入

                  这就是spring最典型的注入方式,通过@Autowired和@Resource进行注入

 

              2.作为方法的入参注入

                  webx中的@Param,@FormData等

 

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. public class LoginAction {  
  2.   
  3.     @Autowired  
  4.     private LoginService loginService; // 一般性注入  
  5.   
  6.     @Autowired  
  7.     private HttpSession session;      // 特殊注入  
  8.   
  9.     public void doLogin(@Param("name") String name, @Param("password") String password,  
  10.                         @Param("return") String returnURI, Context context, Navigator navigator) {// 参数注入  
  11.   
  12.         if (loginService.login(name, password)) {  
  13.             session.setAttribute(Constant.SESSION_KEY, "true");  
  14.             navigator.redirectToLocation(returnURI);  
  15.         } else {  
  16.             context.put("message""用户名、密码错误!");  
  17.         }  
  18.     }  
  19. }  

 

 

 

(2)注入内容

              1.一般类实例

                  如上面的LoginService是我们自定义的,可以直接注入。这与一般的spring依赖注入完全一致

 

              2.特殊实例

                  如HttpSession、HttpServletRequest等特殊实例,webx进行了处理,可以直接注入到类中

 

          3.方法参数

             请求中所带的参数,可以直接解析后作为方法参数传递进去,否则就必须自己解析,如:

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. //传统的写法  
  2. public void execute(Rundata rundata, Context context) {  
  3.         String name = rundata.getParameters().getString("name");  
  4.         context.put("name", name);  
  5. }  
  6. //使用参数注入之后的写法  
  7. public void execute(@Param("name") String name, Context context) {  
  8.         context.put("name", name);  
  9.  }  

 

(3)注入配置

 

          1.总体配置

             直接在webx-component-and-root.xml中加入

 

[html] view plain copy  在CODE上查看代码片派生到我的代码片

  1. <services:data-resolver>  
  2.     <dr-factories:turbine-rundata-resolver />  
  3.     <dr-factories:parameter-resolver />  
  4.     <dr-factories:form-resolver />  
  5. </services:data-resolver>  

 

 

 

          2.turbine-rundata-resolver

             也就是说可以注入TurbineRundata相关数据,即请求上下文相关的数据。类型包括

 

[html] view plain copy  在CODE上查看代码片派生到我的代码片

  1. <ul>  
  2. <li>TurbineRunData</li>  
  3. <li>HttpServletRequest</li>  
  4. <li>HttpServletResponse</li>  
  5. <li>HttpSession</li>  
  6. <li>ServletContext</li>  
  7. <li>ParameterParser</li>  
  8. <li>CookieParser</li>  
  9. <li>Context</li>  
  10. <li>RequestContext及其子类</li>  
  11. <li>Context中的值,需要指定<code>@ContextValue("name")</code>注解。</li>  
  12. </ul>  

 

             实例:

 

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. void doGetRundata(TurbineRunData rundata)  
  2. void doGetNavigator(Navigator nav)  
  3. void doGetContext(Context context)  
  4. void doGetRequestContext(RequestContext requestContext)  

 

          3.parameter-resolver

             使得可以使用@Param、@Params注解注入参数

             @Param用法:

             <1>仅指定参数名称 :@Param("name")

                    实例:

 

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. void doGetInt(@Param("aaa"int i)  

 

             <2>指定参数名称并包含一个默认值 :@Param(name="name",defaultValue="123")

                    实例:

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. void doGetIntDefault(@Param(name = "aaa", defaultValue = "123") Integer i)  

             <3>指定参数名称并包含一组默认值 :@Param(name="name",defaultValues={"1","2","3"})

                    实例:

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. void doGetIntegerArrayDefault(@Param(name = "aaa", defaultValues = { "123""456" }) Integer[] i)  


             @Params用法:

 

             将request parameters中的值放入pojo中

                    实例:

[java] view plain copy  在CODE上查看代码片派生到我的代码片

  1. void doSetData(@Params MyData data)  

 

          4.form-resolver

             使得可以使用@FormData等表单相关注解进行参数注入

 

最后欢迎大家访问我的个人网站:1024s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值