/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.dist.web.action;import java.sql.Connection;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import com.dist.service.A1030Business;
import com.dist.service.B1010Business;
import com.dist.service.D1010Business;
import com.dist.system.db.conn.DBUtils;
import com.dist.system.tools.Tools;
import com.dist.web.form.A1050ActionForm;
import com.dist.web.form.B1020ActionForm;/** 
 * MyEclipse Struts
 * Creation date: 08-10-2009
 * 
 * XDoclet definition:
 * @struts.action validate="true"
 * @struts.action-forward name="all" path="/index.jsp"
 */
public class AllAction extends Action {
/*
 * Generated Methods
 */ /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Connection conn=null;
B1020ActionForm b1020ActionForm = new B1020ActionForm(); 
A1050ActionForm a1050ActionForm = new A1050ActionForm(); 
System.out.println("cuolemei");
try{
conn=DBUtils.getConnection();

B1010Business bu=new B1010Business(conn,request);
List rows=bu.getthings();
if(rows.size()>0)
{
System.out.println(rows);
b1020ActionForm.setROWS(rows);
b1020ActionForm.getROWS();
  }
D1010Business bu1=new D1010Business(conn,request);
List row=bu1.getMsg();
System.out.println(row.size());
if(row.size()>0)
{
a1050ActionForm.setROWS(row);
}
}catch (Exception e) {
e.printStackTrace();
}
finally{
DBUtils.close(conn);
}
return mapping.findForward("all");
}
}a1050ActionForm.setROWS(row);
在页面中用struts标签得不到值?
<logic:present property="ROWS" name="a1050ActionForm">
<logic:iterate id="rows" property="ROWS" name="a1050ActionForm"><bean:write name="rows" property="d0102" />
</logic:iterate> 取不到值

解决方案 »

  1.   

    你new的form没有放到作用域里页面当然取不到了。
      

  2.   

    form还用自己new的?这样不会跟页面上的绑定起来
    还没见过struts这样用的 :)
      

  3.   

    要是action要调用多个formbean中的数据怎么办 只能用一个action
      

  4.   

    我的是网站首页提交一个action 然后读取多张表中的数据  
    给个网站首页一般从数据库中读取数据的方法  谢谢
      

  5.   

    一个action对应一个form,你这样大概你设计得不好
      

  6.   

     是个网站的首页啊  要取多张表的数据
      从一个action中取到数据 再返回到index这主页面
      

  7.   

    看不出来,没明白你的意思。 不过说句:多个Form的话你要讲你从后台得到的数据最好放在request范围内到页面中再去取出来。
      

  8.   

    我的所有操作都是一个action对应一个formbean而现在需要从一个action中调用多个业务操作方法来取到数据(多张表中取得)
    所以就new了各个formbean  把每个formbean放在各个的arraylist中
    通过这想在页面取得到各个表的相对应的数据 有什么好的办法?  谢谢赐教
      

  9.   


    一个action对应一个FormBean,一个FormBean对应多个表单呢。
      

  10.   

    FormBean是由容器创建的,new没用!
      

  11.   

    request.setAttribute("name1",b1020ActionForm)
    request.setAttribute("name2",a1050ActionForm)
    加上这两句不过formbean没这么用的吧,最好是自己写2个新的javabean传到前台去
      

  12.   

    需要写。
    //将bean 放入request以后 在页面才可以取到。
    request.setAttribut("beanname",bean);
      

  13.   

    你说要取出多个formbean的值这个,你那几张表有关联吗,有关联的话,就可以在bean中创建那个类的对象然后new一下,生成get和set方法。 不管你有几张表就创建几个对象,然后在action中去填充里面的值,最后在把formbean放到request作用域中,在页面通过         ${对象名.属性名.属性名}去获得值
    有时后一个formbean里面可以new  很多的form表单对应的module。那是第二种做法。在一个formbean中创建多个 form对象        比如说
    public class ZxxxForm extends ActionForm {
    private ArrayList formFiles = new ArrayList();
    private OaZxxx zxxx=new OaZxxx();
    private OaZxxxfj zxxxfj=new OaZxxxfj(); public OaZxxx getZxxx() {
    return zxxx;
    }
    public void setZxxx(OaZxxx zxxx) {
    this.zxxx = zxxx;
    }
    public OaZxxxfj getZxxxfj() {
    return zxxxfj;
    }
    public void setZxxxfj(OaZxxxfj zxxxfj) {
    this.zxxxfj = zxxxfj;
    }
    public void setTestFile(String iIndex, FormFile formFile) {

    formFiles.add(formFile);
    } public FormFile getTestFile(String iIndex) {
    return (FormFile) formFiles.get(Integer.parseInt(iIndex));
    } public ArrayList getTestFiles() {
    return this.formFiles;
    }

    }这样   在存值的时后先ZxxxForm  zxx= new ZxxxForm();
    zxx.getZxxx(zxxx);(zxxx为你查询的数据)在页面上取同过。${zxxx.属性}
    以上我也没测试过了,不过以前用过。lz去试下。
      

  14.   

    多个action对应一个FormBean,一个FormBean对应多个表单呢
    一个action对应一个form,你这样大概你设计得不好
      

  15.   

    楼主可能觉得自己的意思比较对,但是完全不对,你NEW的一个FORM,就是内存中一个新的FORM了,根本就不是你原来自己定义的那个FORM,在内存中指向的是还是旧的FORM,这样当然得不到值了。
      

  16.   

    可以做的到阿。网站首页有不同的数据表数据。.有很多个模块,.你查询出一个List集合之后.你就request.setarrbite("传到页面的对象名",list);页面用struts标签取值.<logic:iterate id="rows"  name="传到页面的对象名"> 
    <bean:write name="rows" property="d0102" /> 
    </logic:iterate>
      

  17.   

    new的form没有放到作用域里页面
      

  18.   

    ActionForm form  
    Test te=(form)Test 要转换的
      

  19.   

    formbean不是POJO,想填啥就填啥呗,想偷懒可以用23楼的方法