java - JSP页面只接收第一个arrayList

标签 java jsp model-view-controller taglib

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

Controller :

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);
}

业务对象:

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 页面:

<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>

最佳答案

也许不要调用 request.getSession() 两次,而是创建一个全局变量来在 servlet 中保存 session ,然后仅调用 request.getSession() 一次。我也不认为需要将请求和响应传递给这两个函数。

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);
}

关于java - JSP页面只接收第一个arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910353/

相关文章:

javascript - 从其他 JSP 中创建的 JS 函数接收 JSP 中的值

ios - 模型和 Controller 之间的通信

java - 登录时访问被拒绝页面

jsp - 在 JSP 为什么表达式标记不能在语句末尾带分号

java - 如何在SWT中一次监听按键和鼠标事件(Shift+Left MouseUp)?

java - 如何将/ibm_security_logout 的外部 JSP/HTML 片段嵌入到 JSF 中?

c# - MVC 动态导航栏

java - Spring - 如何控制为 View 显示的 URL?

java - 客户端是否必须知道 RMI 服务器返回的对象的 Impl?

java - SAX异常 : Unexpected end of file after null