<bean id="xxPageController"
class="PageQueryController">
<property name="pageLogic" ref="pageLogic" />
<property name="userId" value=" " />
</bean>
这个主要是想根据登陆用户的ID查询数据,这个userId是一个属性字段,表示当前登陆用的ID。所以value的值是随着不同用户的登录而变化。
我应该怎么写才能在这里引用或者赋予当前登陆用户的ID在这个userId里。
事先说明我做的应用暂时不能在页面传参数的,但是登陆时候用session把当前登陆的用户信息保存了。
请哪位高人帮忙解决下问题。

解决方案 »

  1.   

    大哥,你完全违反了spring的IOC原理,spring的property是注入经常不变化的参数,变化的参数那你直接从session取值就可以了,何必还需要注入呢?
      

  2.   

    你非要这么做,也不是没有办法
    1、定义一个Filter,通过它在web.xml中拦截所有与xxPageController有关的url
    public UserFilter implements Filter{
      static ThreadLocal <String> username=new ThreadLocal <String>();
      public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
        username.set((String)((HttpServletRequest)request).getSession(true).getAttribute("user"));//将用户名存入当前线程变量
        chain.doFilter(request,response);
      }
    }
    、spring中有个FactoryBean接口,定义一个类实现这个接口,将它的getObject方法返回一个PageQueryController对象。用这个类代替你在xml中配置的PageQueryController对象public PageQueryControllerFactoryBean implements FactoryBean{
        ................
        public Object getObject(){
          String username=UserFilter.username.get();//这里得到用户名
          //在这里通过用户名和其它参数构造PageQueryController对象
        }
        ..........