struts2迭代器捕获特定值

时间:2012-11-22 15:26:45

标签: java xml jsp struts2 struts-tags

嗨,让我告诉你我搜索了很多,但我找不到我想要的东西

这是方案

我的jsp中有一个表,它通过迭代器加载,ArrayList<Report>

报告有三个属性参数,观察,设计

JSP中的

我将通过迭代器

显示第一和第三列值
<s:iterator value="ReportList" status="status" var="obj">
   <tr>
      <td><s:property value="%{#obj.parameter}" /></td>
      <td><s:textfield theme="simple" name="valOfSim" /></td>
      <td><s:property value="%{#obj.designed}" /></td>
   </tr>
</s:iterator>
Parameter           observation                designed
X                                                10
y                                                11
Z                                                12

现在我必须抓住已输入的第二个值,请帮助!

编辑:我的代码

让我解释第一个预加载方法将被调用,值将通过ArrayList<Obj>预先填充,然后用户将输入观察值然后通过此

捕获
<td><s:textfield theme="simple" name="obj[%{#status.index}].observation" /></td>

之后会有一个提交按钮,点击该提交动作类的方法将被称为

打印用户输入的值(此处为NULL)

import mypro.web.utility.SpringServiceLocator;

public class myAction extends ActionSupport implements      
ModelDriven,SessionAware,ServletRequestAware,Preparable  {
private Map<String, Object> session;
private Model  model = new Model();

public void prepare()
{

            Obj obj = new Obj();
    Obj obj2 = new Obj();
    Obj obj3 = new Obj();

    obj.setDesigned("10");
    obj.setParameter("X");
    model.getReportList().add(obj1);


    obj.setDesigned("11");
    obj.setParameter("y");
    model.getReportList().add(obj2);

            obj.setDesigned("12");
    obj.setParameter("Z");
    model.getReportList().add(obj3);
   }



  public String preload()
   {

  return "success";
   }


  public String submit()
   {


  System.out.println("------------------------------------------------------  
  &&&&&&&&&:"+model.getReportList().size());
    for(Obj obj : model.getReportList)
    {
        System.out.println("the value is to be checked"+obj.getObservation());//value which will be entered by user
        System.out.println("the value is to be checked"+obj.getRefcode()); //value which was added in the prepare method
    }



        return "success";
      } 





       public Object getModel() {

    return model;
}

1 个答案:

答案 0 :(得分:1)

改变这个:

<s:textfield theme="simple" name="valOfSim" />

到此:

<s:textfield theme="simple" name="obj[%{#status.index}].observation" value="" />

这将

  1. 将您的文本字段绑定到observation元素的obj字段;
  2. 保留行号;
  3. 将显示的值设置为空(不知道为什么,但如果这是你想要的......)
  4. 这样,如果你的Action对你的obj元素有一个setter(而不仅仅是一个getter), 当您提交包含迭代元素的表单时,您将检索用户在observation中插入的所有ArrayList<Obj>值...