首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSP页面只接收第一个arrayList

JSP页面只接收第一个arrayList
EN

Stack Overflow用户
提问于 2015-01-13 04:37:58
回答 1查看 74关注 0票数 1

在jsp页面中,它只打印最先访问的函数。如果首先访问function-1,则不会打印function-2。如果首先访问Function-2,则不打印Function-1。有什么建议请提出来。

控制器:

代码语言:javascript
复制
populateTf(tfCount, request, response);
populateSa(saCount, request, response);

response.sendRedirect("testPage.jsp");

//FUNCTION-1
void populateTf(int tfCount, HttpServletRequest request, HttpServletResponse response){       
    ArrayList<TF> tfList = new ArrayList<TF>();

    String field1 = request.getParamter("xyz");
    String field2 = request.getParamter("xyz");
    String field3 = request.getParamter("xyz");

    tfList.add(new TF(field1, field2, field3));

    HttpSession session = request.getSession();
    session.setAttribute("tfList", tfList);
}

//FUNCTION-2
void populateSa(int saCount, HttpServletRequest request, HttpServletResponse response){       
    ArrayList<SA> saList = new ArrayList<SA>();

    String field1 = request.getParamter("xyz");

    saList.add(new SA(field1));

    HttpSession session = request.getSession();
    session.setAttribute("saList", saList);
}

业务对象:

代码语言:javascript
复制
public class TF{
    private String field1, field2, field3;
    public TrueFalse(String field1, String field2, String field3) {
        this.field1 = field1;
        this.field2 = field2;
        this.field3 = field3;
    }
    /* GETTERS AND SETTERS */
}    

public class SA{
   private String field1;
   public ShortAnswer(String field1) {
      this.field1 = field1;
   }
   /* GETTERS AND SETTERS */ 
} 

下面是JSP页面:

代码语言:javascript
复制
<table>      
        <c:forEach items="${sessionScope.tfList}" var="tf">
        <tr>
                <td>${tf.field1}</td>
                <td>${tf.field2}</td>
                <td>${tf.field3}</td>
        </tr>
        </c:forEach>
</table>

<table>         
        <c:forEach items="${sessionScope.saList}" var="sa">
        <tr>
                <td>${sa.field1}</td>               
        </tr>
        </c:forEach>
</table>
EN

回答 1

Stack Overflow用户

发布于 2015-01-13 05:09:15

也许可以创建一个全局变量来在servlet中保存会话,而不是调用request.getSession()两次,并且只调用request.getSession()一次。我也不认为有必要将请求和响应传递给这两个函数。

代码语言:javascript
复制
private HttpSession session = null;

public void doGet(HttpServletRequest request, HttpServletResponse  response) throws IOException, ServletException
{
    session = request.getSession();
    ....
    populateTf(tfCount);
    populateSa(saCount);
    ....
}

private void populateTf(int tfCount)
{       
    ArrayList<TF> tfList = new ArrayList<TF>();

    .... //where is field1, field2, field3 coming from anyway?

    tfList.add(new TF(field1, field2, field3));

    session.setAttribute("tfList", tfList);
}

private void populateSa(int saCount)
{       
    ArrayList<SA> saList = new ArrayList<SA>();

    .... //where is field1 coming from anyway?

    saList.add(new SA(field1));

    session.setAttribute("saList", saList);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27910353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档