2014-11-21 11 views
0

줄무늬로 양식을 만듭니다. 사용자가 입력해야하는 양식 (이름 및 코드)에는 두 개의 텍스트 필드가 있습니다. 사용자가 데이터를 입력 한 후 추가 버튼을 클릭하면 동일한 페이지에 데이터가 표시되도록하고 (추가 버튼 아래에 있다고 가정) 사용자는 다음 번에 버튼을 클릭 할 때 모든 데이터를 볼 수 있도록 다른 데이터를 입력 할 수 있습니다. 같은 페이지의 처음부터 입력 된 데이터이며 더 많은 데이터를 입력 할 수 있습니다. arraylist를 사용하여 사용자 입력을 목록에 저장하고 jstl의 c : forEach를 통해 반복합니다. arraylist가 데이터를 보관하지 못하는 문제는 새로운 데이터를 입력 할 때 이전 데이터를 덮어 씁니다. 나는 어떻게/언제 어디서나 사용자가 더 많은 데이터를 추가 할 수 있고 동시에 페이지에서 모든 것을 볼 수 있도록 데이터를 저장할 것인지 모른다.줄무늬 양식, 다음 프로그램 수행시 사용할 데이터 저장

ClassActionBean.java

package com.example.action; 

public class ClassActionBean implements ActionBean { 
private ActionBeanContext context; 
private String name; 
private String code; 
private ArrayList<String> list = new ArrayList<String>(); 

@DefaultHandler 
public Resolution showData() { 
    list.add(getName()); 
    list.add(getCode()); 
    return new ForwardResolution("/WEB-INF/jsp/import.jsp"); 
    //return new RedirectResolution("/Class.action"); 
} 

public ActionBeanContext getContext() { 
    return context; 
} 

public void setContext(ActionBeanContext context) { 
    this.context = context; 
} 

public ArrayList<String> getList() { 
    return list; 
} 

public void setList(ArrayList<String> list) { 
    this.list = list; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getCode() { 
    return code; 
} 

public void setCode(String code) { 
    this.code = code; 
} 

} 

import.jsp

<%@page contentType="text/html;charset=ISO-8859-1" language="java" %> 
<%@taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" > 
<html> 
<head><title>Test</title></head> 
<body> 
<stripes:form beanclass="com.example.action.ClassActionBean"> 
<table> 
    <tr> 
     <td>Name:</td> 
     <td><stripes:text name="name"/></td> 
    </tr> 
    <tr> 
     <td>Code:</td> 
     <td><stripes:text name="code"/></td> 
    </tr> 
    <tr> 
     <td> 
      <stripes:submit name="showData" value="Add"/> 
     </td> 
    </tr> 

    <c:forEach var="current" items="${actionBean.list }"> 
    <tr> 
     <td><c:out value="${current}"/></td> 
    </tr> 
    </c:forEach> 
</table> 
</stripes:form> 
</body> 
</html> 
+0

서블릿 요청이 실행되는 동안의 ArrayList에만 존재 그래서 각 요청에 대한 다른 목록. 따라서 데이터베이스를 사용하십시오. – developerwjk

+0

요청 범위가 아닌 세션 범위에 해당 빈을 둘 수 있습니다. 그러나 그 한 사용자 만 사용할 수 있으며 해당 세션 중에 만 사용할 수 있습니다. 다시 한 번 데이터베이스가 답입니다. – developerwjk

+0

실제로 데이터베이스가 있지만 사용자에게 먼저 데이터를 표시하고 제출 버튼이 있으므로 사용자가 먼저 추가 및 편집하고 마지막으로 데이터베이스에 제출할 수 있습니다. 데이터베이스에 제출하기 전에 데이터를 저장할 수 있도록 arraylist보다는 어떤 방법이 있습니까? – nahid

답변