我的action中保存了一个实体:
public String getPerson() throws Exception{
p = this.personService.findById(Integer.parseInt(id));
System.out.println("Name is:" + p.getName());
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("p", p);

return "updatePerson";
}
然后JSP中有<s:textfield /> :
<s:hidden name="p.id" id="p.id" value=""></s:hidden>
<s:textfield name="p.name" label="name" value="%{p.name}"> </s:textfield>
<s:textfield name="p.age"  label="age" value="%{p.age}"></s:textfield>
,,,现在取不到值,请各位指点下.......

解决方案 »

  1.   

    struts2在界面上取值不用%号吧,在action中放在request中的值也就是值栈中的值,你在界面上可以直接用ognl取就Ok了
    <s:textfield name="p.age"  label="age" value="#p.age"></s:textfield>或
    <s:textfield name="p.age"  label="age" value="%{#p.age}"></s:textfield>
      

  2.   

    还有,如果你的p在action中是一个全局变量的话,在action中的属性的值是放在值栈中的,可以不用写request.setAtrribute();这一句话,你可以去了试试
      

  3.   

    在网上看到说用什么<s:textfield name="person.name" value="%{person.name}" />之类的取,试了下不行,试试你的方法
      

  4.   

    你把你的struts的配置写出来看看呢
      

  5.   

    Struts.xml<action name="updatePerson" class="savePersonAction" method="getPerson">
    <result name="updatePerson" type="redirect">
    /person/updatePerson.jsp
    </result>
    </action>
    Action:
    private Person p;
    private PersonService personService;
    private String id;

    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
      

  6.   

    你的变量p没有get,set方法么?
      

  7.   

    private Person p;
    private PersonService personService;
    private String id;

    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
    public Person getP() {
    return p;
    }
    public void setP(Person p) {
    this.p = p;
    }
    有啊 , 刚忘记一起贴了。
      

  8.   

    result type 为 redirect ,客户端重定向,request 中数据丢失楼主是要做什么功能呢?要想保存中request数据 ,result 可以用dispatcher 或 chain 
      

  9.   


    就是很简单的一个信息列表,点击后面的【修改】,就进入编辑页面啊,编辑页面的值是根据ID来查的,也就是一个实体,所以在编辑页面要取得Action中传来的值。 试试改下struts.xml配置看情况如何
      

  10.   

    终于解决了,原因是 <s:textfield name="p.name" label="name" value="%{#p.name}">,,这里面的value="%{p.name}",,应该把"#"号去掉,然后struts.xml中的result type也应该改为"dispatcher ",谢谢楼上的兄弟,看来还是我基础太差了....
      

  11.   

    <s:textfield name="p.age" label="age" value="%{#p.age}"></s:textfield>
      

  12.   

    你先debug标签看看对象有没传过来