STRUTS中用<logic:iterate id="row1" name="rows"> 得到数据,竟然会抛出错误? <logic:iterate id="row1" name="rows"> name处应是一个集合在request或session中的名称,您应该在这个jsp页面的上一级action中定义一个集合,然后把集合存放到request或session,然后转向到这个jsp页面 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <logic:iterate id ="" name ="">name应该是一个集合request或session中的的名称,id可以自己随便定义。我给你个例子:下面显示的是logic:iterate这个标签 <logic:iterate id="findalltrainhead" name="findalltrainheadresult" > <tr> <td nowrap bgcolor="#CCCCCC"> <input id="trainHeadID" type="checkbox" name="checkbox" value="<bean:write name="findalltrainhead" property="trainHeaderID"/> "> </td> <td height="31" nowrap bgcolor="#CCCCCC"> <!--½â¾ö·½·¨1 <a href="../trainhead/trainHead.do?operate=findtoupdateTrainHead&trainHeaderID=<bean:write name="findalltrainhead" property="trainHeaderID"/>"><bean:write name="findalltrainhead" property="trainHeaderCode"/> </a>--> <!--½â¾ö·½·¨2--> <a href="../trainhead/trainHead.do?operate=findtoupdateTrainHead&trainHeaderID=<bean:write name="findalltrainhead" property="trainHeaderID"/>&trainHeaderCode=<bean:write name="findalltrainhead" property="trainHeaderCode"/>&deptID=<bean:write name="findalltrainhead" property="deptID"/>&deptName=<bean:write name="findalltrainhead" property="deptName"/>&headTypeID=<bean:write name="findalltrainhead" property="headTypeID"/>&headerTypeName=<bean:write name="findalltrainhead" property="headerTypeName"/>&telNum=<bean:write name="findalltrainhead" property="telNum"/>"><bean:write name="findalltrainhead" property="trainHeaderCode"/> </a> </td> <td bgcolor="#CCCCCC"> <bean:write name="findalltrainhead" property="deptName"/> </td> <td bgcolor="#CCCCCC"> <bean:write name="findalltrainhead" property="headerTypeName"/> </td> <td height="31" bgcolor="#CCCCCC"> <bean:write name="findalltrainhead" property="telNum"/> </td> </tr> </logic:iterate>下面是我在execute方法中写的 if(!v.isEmpty()) { LoginActionForm loginActionForm = new LoginActionForm(); httpServletRequest.setAttribute("userName",loginActionForm.getUserName()); //ÏÔʾËùÊô»úÎñ¶ÎÃû³Æ Vector DeptName = new Vector (); DeptName = showDeptName(); httpServletRequest.setAttribute("deptNameShow",DeptName); //ÏÔʾ³µÍ·ÀàÐÍÃû³Æ Vector HeaderTypeName = new Vector(); HeaderTypeName= showHeaderTypeName(); httpServletRequest.setAttribute("headerTypeNameShow",HeaderTypeName); trainHeadForm.setDeptName(trainHeadForm.getDeptName()); trainHeadForm.setHeaderTypeName(trainHeadForm.getHeaderTypeName()); trainHeadForm.setTrainHeaderCode(Function.toChinese(trainHeadForm.getTrainHeaderCode())); //ÏÔʾËùÓеijµÍ·ÐÅÏ¢ httpServletRequest.setAttribute("findalltrainheadresult", v); //Èç¹û³µÍ·ÐÅÏ¢±í²»Îª¿ÕתÏòtrainHeadMain.jsp£¬ÏÔʾËùÓÐÊý¾Ý return (actionMapping.findForward("findall_trainhead_result")); } else { //ÏÔʾÎÞ²éѯ½á¹ûµÄ¼Ç¼ÐÅÏ¢ ActionErrors errors = new ActionErrors(); ActionError error = new ActionError("trainhead.findalltrainhead.noresult"); errors.add(ActionErrors.GLOBAL_ERROR,error); saveErrors(httpServletRequest,errors); Vector DeptName = new Vector (); //ÏÔʾËùÊô»úÎñ¶ÎÃû³Æ DeptName = showDeptName(); httpServletRequest.setAttribute("deptNameShow",DeptName); //ÏÔʾ³µÍ·ÀàÐÍÃû³Æ Vector HeaderTypeName = new Vector(); HeaderTypeName= showHeaderTypeName(); httpServletRequest.setAttribute("headerTypeNameShow",HeaderTypeName); trainHeadForm.setDeptName(trainHeadForm.getDeptName()); trainHeadForm.setHeaderTypeName(trainHeadForm.getHeaderTypeName()); trainHeadForm.setTrainHeaderCode(Function.toChinese(trainHeadForm.getTrainHeaderCode())); //±íʾûÓзûºÏÌõ¼þµÄ²éѯ¼Ç¼ httpServletRequest.setAttribute("findalltrainheadresult", trainHeadList); //Èç¹û³µÍ·ÐÅÏ¢±íΪ¿ÕתÏòtrainHeadMain.jsp return (actionMapping.findForward("findall_trainhead_noresult")); } }catch(Exception ex) { //throw ex; ActionErrors errors = new ActionErrors(); ActionError error = new ActionError("trainhead.findalltrainhead.noresult"); errors.add(ActionErrors.GLOBAL_ERROR,error); saveErrors(httpServletRequest,errors); return (actionMapping.findForward("findall_trainhead_noresult")); } }呵呵,我开始也是遇到你这样的问题,后来自己解决了,很麻烦的最好你们项目组的有个人会,不会就麻烦了,一个人做要走很多弯路的 Cannot find bean guide in any scope没有找到bean。 guide 是什么东西?你的form么?<logic:iterate>中name是指你所要使用的beanForm的名字。你那个rows是个form么?我觉得rows应该是property属性啊 <logic:iterate id="aa" name="guide"> <tr> <td> <bean:write name="aa" property="USER_NAME"/> </td> </tr> </logic:iterate> 应该是这样,guide是我在ACTION中定义的:request.setAttribute("guide","ggggg"); 写成这样试试<logic:iterate id="aa" name="guide" scope = "request"> 另外,你的"ggggg"是个什么东西,要想用<bean:write>显示里面的东西,"ggggg"就应该是个bean才行,而且里面要定义"USER_NAME"的get和set方法. ggggg就是ACTION中静态的变量啊,相当于我把ggggg要传到JSP页面,在JSP页面接收,应该可以吧,另外你说的方法我试过了,如果scope = "request"不写,默认从页到整个应用进行搜索,总之,写不写都不对,报错,我是没办法了? 看看这样:GUIDE名字和定义的FORMBEAN名字对应起来,另外你的property="USER_NAME"是否存在,在STRUTS-CONFIG文件中ACTION定义是否为APPLICATION 看看这样:GUIDE名字和定义的FORMBEAN名字对应起来,另外你的property="USER_NAME"是否存在,在STRUTS-CONFIG文件中ACTION定义是否为APPLICATION 这个错误的原因可能是:你在<logic:iterate id="aa" name="guide"〉...</logic:iterate>中间嵌套了<tr><td>这类属于<table>标签的子标签,也就是说你的标签嵌套有问题,这样试试看:<tr><td><logic:iterate id="row1" name="rows"><table><tr> <td> <bean:write name="row1" property="USER_NAME"/> </td> </tr></table> </logic:iterate></td></tr> 在<logic:iterate>...</logic:iterate> 之间直接嵌套<table>...</table> 求javaee 可视化编程工具 如何控制listener在服务完全启动后再执行呢? 我在Java的后台中设置的cookie,在页面如何使用JavaScript得到? 用Spring的JdbcTemplate链接数据库,对返回的List,如何取字段名,而不是字段值? Java IO 问题 高分相送 用JAVA实现简单的程序 RMI问题,大虾帮忙????? 请问怎么用struts自带的标签实现一个页面两个form两个action的提交? ejb资料下载 XML问题 急啊,在solaris8上用JBOSS发布EJB的问题。 STRUTS框架中,如何从数据库表中取数据(100条)?300分
name应该是一个集合request或session中的的名称,id可以自己随便定义。
我给你个例子:
下面显示的是logic:iterate这个标签
<logic:iterate id="findalltrainhead" name="findalltrainheadresult" >
<tr>
<td nowrap bgcolor="#CCCCCC"> <input id="trainHeadID" type="checkbox" name="checkbox" value="<bean:write name="findalltrainhead" property="trainHeaderID"/> "> </td>
<td height="31" nowrap bgcolor="#CCCCCC">
<!--½â¾ö·½·¨1
<a href="../trainhead/trainHead.do?operate=findtoupdateTrainHead&trainHeaderID=<bean:write name="findalltrainhead" property="trainHeaderID"/>"><bean:write name="findalltrainhead" property="trainHeaderCode"/>
</a>-->
<!--½â¾ö·½·¨2-->
<a href="../trainhead/trainHead.do?operate=findtoupdateTrainHead&trainHeaderID=<bean:write name="findalltrainhead" property="trainHeaderID"/>&trainHeaderCode=<bean:write name="findalltrainhead" property="trainHeaderCode"/>&deptID=<bean:write name="findalltrainhead" property="deptID"/>&deptName=<bean:write name="findalltrainhead" property="deptName"/>&headTypeID=<bean:write name="findalltrainhead" property="headTypeID"/>&headerTypeName=<bean:write name="findalltrainhead" property="headerTypeName"/>&telNum=<bean:write name="findalltrainhead" property="telNum"/>"><bean:write name="findalltrainhead" property="trainHeaderCode"/>
</a>
</td>
<td bgcolor="#CCCCCC"> <bean:write name="findalltrainhead" property="deptName"/>
</td>
<td bgcolor="#CCCCCC"> <bean:write name="findalltrainhead" property="headerTypeName"/>
</td>
<td height="31" bgcolor="#CCCCCC"> <bean:write name="findalltrainhead" property="telNum"/>
</td>
</tr>
</logic:iterate>
下面是我在execute方法中写的
if(!v.isEmpty())
{
LoginActionForm loginActionForm = new LoginActionForm();
httpServletRequest.setAttribute("userName",loginActionForm.getUserName());
//ÏÔʾËùÊô»úÎñ¶ÎÃû³Æ
Vector DeptName = new Vector ();
DeptName = showDeptName();
httpServletRequest.setAttribute("deptNameShow",DeptName);
//ÏÔʾ³µÍ·ÀàÐÍÃû³Æ
Vector HeaderTypeName = new Vector();
HeaderTypeName= showHeaderTypeName();
httpServletRequest.setAttribute("headerTypeNameShow",HeaderTypeName);
trainHeadForm.setDeptName(trainHeadForm.getDeptName());
trainHeadForm.setHeaderTypeName(trainHeadForm.getHeaderTypeName());
trainHeadForm.setTrainHeaderCode(Function.toChinese(trainHeadForm.getTrainHeaderCode()));
//ÏÔʾËùÓеijµÍ·ÐÅÏ¢
httpServletRequest.setAttribute("findalltrainheadresult", v);
//Èç¹û³µÍ·ÐÅÏ¢±í²»Îª¿ÕתÏòtrainHeadMain.jsp£¬ÏÔʾËùÓÐÊý¾Ý
return (actionMapping.findForward("findall_trainhead_result"));
}
else
{
//ÏÔʾÎÞ²éѯ½á¹ûµÄ¼Ç¼ÐÅÏ¢
ActionErrors errors = new ActionErrors();
ActionError error = new ActionError("trainhead.findalltrainhead.noresult");
errors.add(ActionErrors.GLOBAL_ERROR,error);
saveErrors(httpServletRequest,errors);
Vector DeptName = new Vector ();
//ÏÔʾËùÊô»úÎñ¶ÎÃû³Æ
DeptName = showDeptName();
httpServletRequest.setAttribute("deptNameShow",DeptName);
//ÏÔʾ³µÍ·ÀàÐÍÃû³Æ
Vector HeaderTypeName = new Vector();
HeaderTypeName= showHeaderTypeName();
httpServletRequest.setAttribute("headerTypeNameShow",HeaderTypeName);
trainHeadForm.setDeptName(trainHeadForm.getDeptName());
trainHeadForm.setHeaderTypeName(trainHeadForm.getHeaderTypeName());
trainHeadForm.setTrainHeaderCode(Function.toChinese(trainHeadForm.getTrainHeaderCode())); //±íʾûÓзûºÏÌõ¼þµÄ²éѯ¼Ç¼
httpServletRequest.setAttribute("findalltrainheadresult", trainHeadList);
//Èç¹û³µÍ·ÐÅÏ¢±íΪ¿ÕתÏòtrainHeadMain.jsp
return (actionMapping.findForward("findall_trainhead_noresult"));
}
}catch(Exception ex)
{
//throw ex;
ActionErrors errors = new ActionErrors();
ActionError error = new ActionError("trainhead.findalltrainhead.noresult");
errors.add(ActionErrors.GLOBAL_ERROR,error);
saveErrors(httpServletRequest,errors);
return (actionMapping.findForward("findall_trainhead_noresult"));
}
}
呵呵,我开始也是遇到你这样的问题,后来自己解决了,很麻烦的
最好你们项目组的有个人会,不会就麻烦了,一个人做要走很多弯路的
没有找到bean。
<logic:iterate>中name是指你所要使用的beanForm的名字。你那个rows是个form么?我觉得rows应该是property属性啊
<tr>
<td>
<bean:write name="aa" property="USER_NAME"/>
</td>
</tr>
</logic:iterate>
应该是这样,guide是我在ACTION中定义的:request.setAttribute("guide","ggggg");
<logic:iterate id="aa" name="guide" scope = "request">
GUIDE名字和定义的FORMBEAN名字对应起来,另外你的property="USER_NAME"是否存在,在STRUTS-CONFIG文件中ACTION定义是否为APPLICATION
GUIDE名字和定义的FORMBEAN名字对应起来,另外你的property="USER_NAME"是否存在,在STRUTS-CONFIG文件中ACTION定义是否为APPLICATION
这样试试看:
<tr><td>
<logic:iterate id="row1" name="rows">
<table>
<tr>
<td>
<bean:write name="row1" property="USER_NAME"/>
</td>
</tr>
</table>
</logic:iterate>
</td></tr>
在<logic:iterate>...</logic:iterate> 之间直接嵌套<table>...</table>