请问struts2是在哪个地方对Action中的POJO进行setter调用的?
比方有一个 LabelValueVO, 有两个属性, label, value,分别有setter和getter
在Action中有一个 LabelValueVO的对象。而在jsp中有
<s:form ......>
    <s:textfield name="labelValueVO.label" value="%{labelValueVO.label}"/>
    <s:textfield name="labelValueVO.value" value="%{labelValueVO.value}"/>
    <s:submit>
</s:form>请问是在哪一个拦截器或者别的什么地方,struts2将页面中的labelValueVO.label和labelValueVO.value组装成
一个LabelValueVO的?

解决方案 »

  1.   

    由params拦截器将页面中值传入Bean属性,其间需要调用到Converter做类型转换工作。
      

  2.   

    感谢magong的回复。能告诉我个体一点吗?其实我是想这样子做,在页面中只有
    <s:textfield name="labelValueVO.label" value="%{labelValueVO.label}"/>而labelValueVO.name属性我想在拦截器中赋值。现在的问题是我不知道在哪里(必须是在action执行execute之前)将页面中的textfield组成的LabelValueVO取出来然后把name属性加进去。
      

  3.   

    在label的set方法中做是不是可以?用隐藏域应该也可以做。或者为你的Action定义自己的Converter。这些都不行,就写拦截器吧,位置放在params拦截器之后。
      

  4.   

    struts2的参数拦截器回对参数进行处理,
      

  5.   


    参考struts2 API帮助文档
      

  6.   

    可以去跟踪调试一下Struts2,其实人家已经封装好了,可以直接拿来用的嘛
      

  7.   

    各位,我是想实现这样的功能,每个需要保存的实体都需要必填属性createdBy,那么在页面上新增实体时执行保存的action,我想在这个过程中使用类似拦截器的方式把当前登录的用户名写入到准备新增的实体中的createdBy。因为所有的实体类都继承于一个BaseEntity, BaseEntity中有一个createdBy. 这样的话,设想在struts2利用页面上的属性组装成一个BaseEntity(任何一个子类对象)时,我就获得该BaseEntity,然后设置createdBy。class BaseEntity...{
      String createdBy;
      //setter, getter...
    }
    class LabelValueVO extends BaseEntity{
      String label;
      String value;
      //setter, getter...
    }action:
    AnyAction extends ActionSupport {
      LabelValueVO labelValueVO;
      //setter, getter....
      public String execute(){...}
    }jsp:
    <s:form name...>
      <s:textfield name="labelValueVO.label"/>
    </s:form>