private List list=null;
public List getList() {
return list;
} public void setList(List list) {
this.list = list;
} public String query(){
list=server.queryAll();
return "listall";
}queryAll方法中的list是ArrayList,存储的是也为数组。返回的页面:
<s:iterator value="这个地方写什么才能取到action中返回的List" status="admin" id="listss">
<tr> <td height="25" align="center">
<s:textfield name="serverip" value="%{#request.serverInfo[#admin.index][0]}"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="%{#request.serverInfo[#admin.index][1]}"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>
public List getList() {
return list;
} public void setList(List list) {
this.list = list;
} public String query(){
list=server.queryAll();
return "listall";
}queryAll方法中的list是ArrayList,存储的是也为数组。返回的页面:
<s:iterator value="这个地方写什么才能取到action中返回的List" status="admin" id="listss">
<tr> <td height="25" align="center">
<s:textfield name="serverip" value="%{#request.serverInfo[#admin.index][0]}"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="%{#request.serverInfo[#admin.index][1]}"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>
<c:forEach>
<s:iterator value="%{list}" status="admin" id="listss">
<tr>
<td height="25" align="center">
<s:textfield name="serverip" value="显示数组的第一个值得应该怎么写"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="显示数组的第二个值得应该怎么写"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>
例如:
<c:forEach items="${list}" var="list" varStatus="status">
<tr><td>${list}</td></tr>
</c:forEach>
<tr>
<td height="25" align="center"> <s:property value="#dd[0]"/> </td>
<td align="center"> <s:property value="#dd[1]"/> </td>
</tr>
</s:iterator>
<s:textfield name="serverip" value="显示数组的第一个值得应该怎么写"> </s:textfield>这个地方不知道怎么取值了
你在页面写的时候依旧可以像下面这样
<s:iterator value="${list}" status="admin" id="dd">
<tr>
<td height="25" align="center">
<s:textfield name="serverip" value="<s:property value='#dd[0]'/>"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="<s:property value='#dd[1]'/>"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"> </s:submit>
</td>
</tr>
</s:iterator> 还有<s:iterator value="${list}" status="admin" id="dd">
这个地方时用$不是%
<tr>
<td height="25" align="center"> <s:property value="#dd[0]"/> </td>
<td align="center"> <s:property value="#dd[1]"/> </td>
</tr>
</s:iterator> 我这里这段代码只是告诉你如何拿一个一维数组的第一个值和第二个值
<tr>
<%System.out.println("你好啊"); %>
<td height="25" align="center">
<!--<s:textfield name="serverip" value="%{listss[0]}"> </s:textfield>-->
</td>
<td align="center">
<!--<s:textfield name="serverip" value="%{listss[1]}"> </s:textfield>-->
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>
我是用%的啊,list里面有两条记录,控制台打印出来了两个"你好啊",所以我觉得用%是没问题的。
至于request.setAttribute("list",list);
http://topic.csdn.net/u/20100119/10/9d39854d-e8f6-47e0-9bc3-ab884c27c088.html
这个帖子中的人说struts2说不用,有list的get/set方法就可以了。我是第一次用struts2,不知道行不行,之前用 struts1就是用request.setAttribute("list",list); 返回值的
那你在action类里面需要定义一个private List list;然后给它get和set方法 然后在方法里面让list=查询结果就ok了 最好是调用setList(查询结果)然后在页面之接用<s:iterator value="%{list}" status="admin" id="listss">这个就ok了
<s:iterator value="${list}" status="admin" id="listss">
<tr>
<%System.out.println("你好啊"); %>
<td height="25" align="center">
<!--<s:textfield name="serverip" value="%{listss[0]}"> </s:textfield>-->
</td>
<td align="center">
<!--<s:textfield name="serverip" value="%{listss[1]}"> </s:textfield>-->
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>报这样的错误:
javax.servlet.ServletException: org.apache.jasper.JasperException: /server/serverlist.jsp(56,2) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause org.apache.jasper.JasperException: /server/serverlist.jsp(56,2) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
这个在控制台上可以打印出了循环语句
我是问之后的:<s:textfield name="serverip" value="这里怎么取值"> </s:textfield>
<s:textfield name="serverip" value=" <s:property value='#listss[1]'/>"> </s:textfield>
这样子写,页面上文本框里面显示的就是:<s:property value='#listss[1]'/>
public class ServerAction extends ActionSupport {
private List list;
/**
* 服务信息处理类
*/
private Server server=new Server();
public String query(){
list=server.queryAll();
return "listall";
}
public List getList() {
return list;
} /**
* @param list the list to set
*/
public void setList(List list) {
this.list = list;
}
}public class Server {
public List queryAll(){
String sql="select serverIP,serverPort from co_server";
List list=null;
try {
list = jdbc.getQueryResult(sql);
//HttpServletRequest request = ServletActionContext.getRequest();
//request.setAttribute("serverInfo",list);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
<tr>
<%System.out.println("你好啊"); %>
<td height="25" align="center">
<s:textfield name="serverip" value="<s:property value='#listss[0]'/>"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="<s:property value='#listss[0]'/>"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>struts.xml:
<package name="servercode" extends="struts-default">
<action name="*Server" class="com.zoyechina.consumption.action.server.ServerAction" method="{1}">
<result name="listall">server/serverlist.jsp</result>
</action>
</package>
List results = new ArrayList();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
DBConnection dbcon = new DBConnection();
//conn = dbcon.getWebConnection();
conn = dbcon.getConnectionFile();
if (conn == null) {
System.out.println("未能获得连接");
return null;
}
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int col = rsmd.getColumnCount();
while (rs.next()) {
String rows[] = new String[col];
for (int i = 0; i < col; i++) {
rows[i] = rs.getString(i + 1);
}
results.add(rows);
}
}
catch (SQLException sqlex) {
throw sqlex;
}
finally {
closeResultSet(rs);
closeStatement(stmt);
closeConnection(conn);
}
return results;
}
<tr>
<td height="25" align="center">
<s:textfield name="serverip" value="${str[0]}"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="${str[1]}"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"> </s:submit>
</td>
</tr>
</c:forEach>
<c:forEach items="${list}" var="str" varStatus="status">
<tr>
<td height="25" align="center">
<s:textfield name="serverip" value="${str[0]}"> </s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="${str[1]}"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"> </s:submit>
</td>
</tr>
</c:forEach>还是错误:description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:275)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
<s:iterator value="%{list}" status="admin" id="listss">
<tr>
<td height="25" align="center">
<s:textfield name="serverip" value="%{#listss[0]}"></s:textfield>
</td>
<td align="center">
<s:textfield name="serverip" value="%{#listss[1]}"> </s:textfield>
</td>
<td align="center">
<s:submit value="修改"></s:submit>
</td>
</tr>
</s:iterator>
在你的jsp页面内的page指令内有没有加一句这样的话isELIgnored="true"