我在学习Struts2时,使用Struts2的模型驱动来赋值,但始终是null,如下:
html:<body>
<s:form action="person" method="get">
<s:textfield name="person.name" label="name"/>
<s:textfield name="person.age" label="age"/>
<s:submit value="submit"/>
</s:form>
  </body>bean:public class Person {
         private int id;
private String name;
private int age;
         //....省略getter与seter方法action:public class PersonAction extends ActionSupport {
         //通过spring注入
         private PersonMgr personMgr; public Person person;

public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
}

@Override
public String execute() throws Exception {
                  //此时打印出的person值始终为null,不知是为什么
System.out.println("person=" + person);
         personMgr.addPerson(person);
return SUCCESS;
}
}在action中的execute方法中得到的person始终是null,请问是为什么?
我在google里搜了下,在此PersonAction类中实现了ModelDriven接口,如下:public class PersonAction extends ActionSupport implements ModelDriven<Person> {          //通过spring注入
         private PersonMgr personMgr; public Person person = new Person(); public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
}

@Override
public String execute() throws Exception {
System.out.println("person=" + person);
if (person != null) {
                           //此时得到的name依然是null
System.out.println(person.getName());
}
         personMgr.addPerson(person);
return SUCCESS;
}

public Person getModel() {
return person;
}
}
通过Person person = new Person()得到的person虽然不是null,但person.getName()得到的依然是null,但我在页面上是输过值的,希望高手能指导下,解决立即给分!谢谢

解决方案 »

  1.   

    <s:form action="person" method="get">
    改成<s:form action="person" method="post">无语
      

  2.   

    确实
    person.name这个是干嘛啊
      

  3.   

    晕,这个[color=#FF0000]不会是给我们看的吧
      

  4.   

    这不是struts2模型驱动的例子吗?在表单里使用person.name,然后在action中就可以通过定义Person person自动获得了吗?而那个[color=#FF0000]是我想让那些代码显示为红色,结果得不偿失。
      

  5.   

    我起初是用method="post",但我为了测试又改成了method="get",结果都不行!!!
    有谁能帮下吗?我已经搞了一整天了
    在线等,一旦测试通过,则马上给分!
      

  6.   

    正常不能啊! 你是不是少什么东西啊?后台没报异常吗?person类有name属性的set方法吗?
      

  7.   

    后台没报任何异常,也有Setter与getter方法,我真是没办法了
      

  8.   


    你的PersonAction类的struts.xml配置发过来!
      

  9.   

    xml:<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    <package name="personService" extends="struts-default">
    <action name="person" class="PersonAction">
    <result name="success" type="redirect">/add.jsp</result>
    <result name="input">/add.jsp</result>
    </action>

    </package>
    </struts>
      

  10.   

    <action name="person" class="PersonAction">class="PersonAction"中的PersonAction是和spring整合的bean id
    还是这个类没有包 类名是PersonAction
      

  11.   

    是spring管理的,由spring注入的
    <bean id="PersonAction" class="cn.zcl.ssh.action.PersonAction" scope="prototype">
          <property name="personMgr" ref="personMgr"/>
    </bean>
      

  12.   


    怪了,如果是在不行 就只能把person类的所有属性放入action中吧 这样应该是没问题我也很纳闷 正常是不会出现想你这种情况的