首先我的ActionForm(InfoForm)有一个List(persons),List是存放对象(person)的集合,person对象有个属性叫sex。其次在我的JSP页面上,有2个输入性别的SELECT下拉框,它们的值对应不同的person对象中的sex属性。我希望我选择了下拉框中的值进行提交后,会通过actionform自动进行自动set和get,但是在调用struts迭代标签后, 却不会自动set和get, 具体的代码如下 ,请达人解答(必须用迭代标签来实现) <logic:iterate id="person" name="infoForm" property="persons" indexId="index">
<html:select name="person" property="sex" >
<html:option value="male">MALE</html:option>
<html:option value="female">FEMALE</html:option>
</html:select>
<br>
</logic:iterate>

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【davidtbl】截止到2008-07-16 15:53:12的历史汇总数据(不包括此帖):
    发帖的总数量:6                        发帖的总分数:260                      每贴平均分数:43                       
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:5                        结贴的总分数:260                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:83.33 %               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    你是想得到list下,person下,的sex属性吧。你看下
    应该需要把list存储在session或者request中
    paramId="stuId" paramName="stu" paramProperty="stuId"
    paramId可以对应list,paramName可以对应person,paramProperty可以对应sex。
    一层一层提取出来
      

  3.   

    你的ActionForm没有getSex(),setSex(),
    在person里的getSex(),setSex()是调用不到的
      

  4.   

    回3楼:ActionForm里放的是对象的list, getSex和 setSex都是写在这个对象里的方法, 写在ActionForm里肯定是不对的回2楼:我的JSP页面上首先迭代标签获得infoForm的property(persons)进行迭代,所以循环取出的是每一个persons中的对象person然后<html:select name="person" property="sex" > 会调用person的setSex方法,但是我的ActionForm中却没有调用我写的setPerson方法反应到persons中,不知道问题出在哪里
      

  5.   

    这是迭代,可能有多条记录,你的ActionForm中的person属性如何对应
      

  6.   


    如果你的ActionForm是person的Form,那么你只能一个一个来进行设置,不然Form没有办法进行设置;
    也就是说,你的页面上的Form的所有属性值必须有ActionFrom的成员变量来一一对应.
      

  7.   

    回楼上, 我的ActionForm中的属性是个List,如下
    List<Person> persons;List中存放的是Person,Person中有个sex属性迭代的时候,
    <logic:iterate id="p" name="infoForm" property="persons" indexId="index">
    <html:select name="p" property="sex" >
    <html:option value="male">MALE</html:option>
    <html:option value="female">FEMALE</html:option>
    </html:select>
    <br>
    </logic:iterate>但是在页面提交的时候,我选中的select框里的值为什么不会自动传送到后台, 请问问题出在哪public class InfoForm extends ActionForm {
    private List<Person> persons;

    public List<Person> getPersons() {
    if (persons == null) {
    persons = new ArrayList<Person>(); }

    return persons;
    } public void setPersons(List<Person> persons) {
    this.persons = persons;
    }

    public void setPerson(int index, Person person) {
    if (persons == null) {
    persons = new ArrayList<Person>(); }

    if (index < persons.size()) {
    persons.set(index, person);
    } else {
    persons.add(index, person);
    }
    }

    public Person getPerson(int index) {
    if (persons == null) {
    persons = new ArrayList<Person>(); }

    if (persons.size() < index) {
    for (int i = persons.size() -1 ; i < index; i ++) {
    persons.add(new Person());
    }
    }

    return (Person) persons.get(index);
    }}public class Person {
    private String sex;

    public String getSex() {
    return sex;
    }
    public void setSex(String sex) {
    this.sex = sex;
    }

    }
      

  8.   


    搂主在form里面定义的是persons,有没有办法隐射到persons里面的某个person对象的set方法呢,我和搂主同问一下顶
      

  9.   


    可以呀,不过需要自定义集合,实现get、set方法,稍有复杂,呵呵
      

  10.   

    你的formBean里设置的是Person对象,而你的页面性别对应的值提交到FormBean是是字符串数组吧,肯定无法实现封装的。整个页面应该都是对应到所有的Person对象吧,性别就直接对应对性别集合,对整个Person迭代,迭代中根据改Person设置性别值再提交啊