我目前的项目使用SSH来实现,所有Action由Spring来进行维护。
例如: <bean id="client.ListProductAction"
class="com.sandlinker.web.action.client.ListProductAction">
<property name="productService">
<ref bean="productService" />
</property>
<property name="pagesize" >
<value>20</value>
</property>
</bean>在ListProductAction中有类似如下代码:public class ListProductAction extends ActionSupport {
private ProductService productService;
private int pagesize;
...
}
上面的bean中注入productService可以成功,但是注入pagesize则不成功(pagesize的值为0)。而如果能够直接在这里注入pagesize值,则比较方便明了。而且发现直接在这里注入像String、List、Map之类也是不行的,而只能注入其他的bean,例如上面的<ref bean="productService" />希望大侠们可以解释一下其中的原因。(虽然不使用注入的方式也可以用其他的方法来传入pagesize参数,例如写在单独的properties文件或者在request参数中加入pagesize等等)

解决方案 »

  1.   

    <bean id="client.ListProductAction"
            class="com.sandlinker.web.action.client.ListProductAction">
            <property name="productService">
                <ref bean="productService" />
            </property>
            <property name="pagesize" value="20" >
            </property>
        </bean>
    试试,另外检查get set方法
      

  2.   

    String是通过对象池进行注入的,就把它想成一个Map对象,key就是id属性值,而value是Object,你觉得基本类型(除String)可以注入吗?虽然现在可以自动包装,但Spring是在2004年就已经有了,那时还没这个特性,再说基本类型有这个必要吗?明白了Spring的出现原因,你就不想再去关心这个问题了。
    另外String类型应该可能吧?
    Map,List等集合类型肯定不能这样注入啊,正确的方式注入你应该知道的。
      

  3.   

    ListProductAction中没有getPagesize() setPagesize(int pagesize)方法吧?
      

  4.   

    String是通过对象池进行注入的
      

  5.   

    private int pagesize;
    并设置set方法
    public void setPagesize(int pagesize) {
    this.pagesize = pagesize;
    }
    <property name="pa
    gesize" value="20" />
      

  6.   

    楼主的方法<property name="pagesize" >
                <value>20</value>
            </property>
      

  7.   

    你有getter  setter方法吗?
    属性命名是否规范?<property name="pagesize" value="20" >  和
    <property name="pagesize">
    <value>20</value>
    </property>有区别吗?
      

  8.   

    !!!不要讨论setter/getter的问题,代码肯定是没有错的,大家可能没有看到省略号了——“...”除了上述这种比较特殊的情形外,一般情况下注入基本类型及string/map/list等是没有问题的,例如在productService中注入基本类型(如int)就没有问题。而这种注入目的并不是减少工厂类或分离具体实现类,而是为了让配置更加灵活(例如设置xml的路径),不用硬编码到Java中,所以说“基本类型有这个必要吗?”——有必要的,虽然这不是Spring的主要卖点。我关注的问题是,为什么通常情况下可以采取直接设置value的方式注入,在Action中就无效了呢?
      

  9.   

    把ListProductAction 这个类的完整代码贴上来看看。