我action得到一个list,然后我想把这个list里面的值分别赋到struts标签的文本框里,该如何赋值?
我在jsp页面里定义一个String类型的变量id,这个id是从action里的list得到的。现在我想把这个id赋给下面这个文本框,该如何写?我是先把list放到session里,然后在页面获取的session。
或者是不是有更简单的方法,就是,不用把list放到session里,而在jsp页面可以直接获取这个list并赋给文本框?
<s:form>
  <s:textfield name="id" key="ID" value=""/>
</s:form>

解决方案 »

  1.   

    必須先存起來用request,session存,都可以list 有多個對象,那你就要迭代取出,並賦值到對應的文本框裏
      

  2.   

    你可以把要存储的list里面的东西 放到对象里面
    <s:textfield name="id" key="ID" value="user。id"/>
      

  3.   

    我已经迭代取出来了,我不是说了吗?我在jsp页面里定义了一个id=((ArrayList<Book>)session.getAttribute("list")).getId();
    然后怎么把这个id赋到那个文本框里去?
      

  4.   

    id=((ArrayList<Book>)session.getAttribute("list")).getId();request.setAttrubute("theId",id);
    <s:textfield name="id" key="ID" value="#theId"/>
      

  5.   


    id=((ArrayList<Book>)session.getAttribute("list")).getId();貌似这段代码 有问题 一个集合 有 getId()方法吗
      

  6.   

    可以用 <%%> 这种方式执行   <s:textfield name="id" key="ID" value="<%=id%>"/>
      

  7.   

    在action中声名个id,提供get,set方法
    ,在action中将list的值,给id!
      

  8.   

    id=((ArrayList<Book>)session.getAttribute("list")).getId();他的ID是在JSP页面上获得的,也就是说LZ已经在页面上有也嵌套了JAVA代码了,所以直接就可以:
    在嵌套的JAVA 代码中:
    request.setAttrubute("theId",id);然后在页面中:
    <s:textfield name="id" key="ID" value="#theId"/>
      

  9.   

    问下8楼 ((ArrayList<Book>)session.getAttribute("list")) 这段代码返回什么值  是不是一个集合 集合 有 getId();
      
      

  10.   

    <c:forEach items="${list}" var="data">
      <input type="text" name="id" value=""${data.id}>
    </c:forEach>
      

  11.   

    struts2的核心:拦截器机制。负责解析用户的请求参数,并将请求参数赋值给Action对应的属性!
      

  12.   

    我现在遇到的问题是,action处理完了并把值传递回页面到,在页面如何将处理的结果赋到struts2的标签里。
      

  13.   


    <s:iterator value="cList" var="cus" status="status">
       <tr>
    <td align="center">
      <s:property value="#st.index+1" />
    </td>
    <td>
      <s:property value="#cus.customerName" /> </td>
       </tr>
    </s:iterator>
      

  14.   

    我明白怎么放到页面,我的问题是怎么放到struts2的文本框!
      

  15.   

    这种方法似乎不行,输出的是"#theId",而不是theId的值。
      

  16.   

    你这还够纠结的。<s:textfield  name="name" maxlength="25" value="${boardOrder.name}"></s:textfield>
      

  17.   

    似乎struts2不支持这种写法,这样写的话会出错。
      

  18.   


    <s:iterator value="jobissuelist" id="jobissue" status="st">
    <s:form action="changejob" method="post"  theme="simple" ><s:textfield name="ji.job" id="ji.jobID" value="%{job}"></s:textfield></s:form>
    </s:iterator>
      

  19.   

    <s:textfield name="ji.job" id="ji.jobID" value="%{job}"></s:textfield>
    jobissuelist  為LIST   和這类似 照着修改及就行
      

  20.   

    写了点,也许对你有帮助
    1)环境:jdk1.5,tomcat5.5
    2)导入sturts2jar包:commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、commons-logging-1.0.4.jar、freeer-2.3.15.jar、ognl-2.7.3.jar、struts2-core-2.1.8.jar、xwork-core-2.1.6.jar。
    3)web.xml内容:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
         <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    4)struts.xml文件内容:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <package name="anhuixiao" namespace="/anhuixiao" extends="struts-default">
    <action name="list" class="cn.anhuixiao.action.PersonListAction">
    <result name="list">/WEB-INF/page/personlist.jsp</result>
    </action>
    </package>
    </struts>
    5)PersonListAction.java内容
    package cn.anhuixiao.action;import java.util.ArrayList;
    import java.util.List;import cn.anhuixiao.bean.Book;public class PersonListAction {

    private List<Book> books;

    public List<Book> getBooks() {
    return books;
    } public void setBooks(List<Book> books) {
    this.books = books;
    } public String execute(){
    books = new ArrayList<Book>();
    books.add(new Book(56, "javaweb", 90));
    books.add(new Book(80, "ejb", 78));
    books.add(new Book(23, "spring", 50));
    return "list";
    }
    }
    6)Book.java内容:
    package cn.anhuixiao.bean;public class Book {
    private Integer bookid;
    private String name;
    private Integer price;

    public Integer getBookid() {
    return bookid;
    }
    public void setBookid(Integer bookid) {
    this.bookid = bookid;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Integer getPrice() {
    return price;
    }
    public void setPrice(Integer price) {
    this.price = price;
    }

    public Book(Integer bookid, String name, Integer price) {
    this.bookid = bookid;
    this.name = name;
    this.price = price;
    }

    }
    7)personlist.jsp内容:
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'personlist.jsp' starting page</title>
        
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   </head>
      
      <body>
      
    ================会把Book 放在 stack top========= <br/>
    <s:iterator value="books">
    <s:property value="name"/>,价格:<s:property value="price"/><br/>
    <input type="text" name="xx" value="<s:property value="name"/>"/>
    </s:iterator>
      </body>
    </html>
    说明:
    1)struts2中每一个请求都会生成一个ActionContext对象,而且把对应的action放root下,然而,<s:iterator value="books">会把该list放valueStack对象栈顶。可以通过标签<s:property value="name"/>或者${name}展现到jsp页面。
    2)这里如果写成<s:textfield name="id" key="ID" value="<s:property value="name"/>"/>是通不过的,我想标签<s:textfield>内部做了特殊处理,但此标签最终还是解析成<input type="text">。写成<input type="text" name="xx" value="<s:property value="name"/>"/>应该可以满足你要求。欢迎大家继续探讨。谢谢
      

  21.   

    对了,浏览器中你输入http://localhost:9999/ognl/anhuixiao/list.action既可以看到效果。9999是tomcat改写后的端口号
      

  22.   

    直接这么写也是可以的,如下
    <s:iterator value="books">
    <s:property value="name"/>,价格:<s:property value="price"/><br/>
    <!--  <input type="text" name="xx" value="<s:property value="name"/>"/><br/>-->
    <s:textfield name="name"/>
    </s:iterator>
      

  23.   

    额,,,这个很简单吧 EL和strurts标签都可以输出哦~~~