줄무늬로 양식을 만듭니다. 사용자가 입력해야하는 양식 (이름 및 코드)에는 두 개의 텍스트 필드가 있습니다. 사용자가 데이터를 입력 한 후 추가 버튼을 클릭하면 동일한 페이지에 데이터가 표시되도록하고 (추가 버튼 아래에 있다고 가정) 사용자는 다음 번에 버튼을 클릭 할 때 모든 데이터를 볼 수 있도록 다른 데이터를 입력 할 수 있습니다. 같은 페이지의 처음부터 입력 된 데이터이며 더 많은 데이터를 입력 할 수 있습니다. 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>
서블릿 요청이 실행되는 동안의 ArrayList에만 존재 그래서 각 요청에 대한 다른 목록. 따라서 데이터베이스를 사용하십시오. – developerwjk
요청 범위가 아닌 세션 범위에 해당 빈을 둘 수 있습니다. 그러나 그 한 사용자 만 사용할 수 있으며 해당 세션 중에 만 사용할 수 있습니다. 다시 한 번 데이터베이스가 답입니다. – developerwjk
실제로 데이터베이스가 있지만 사용자에게 먼저 데이터를 표시하고 제출 버튼이 있으므로 사용자가 먼저 추가 및 편집하고 마지막으로 데이터베이스에 제출할 수 있습니다. 데이터베이스에 제출하기 전에 데이터를 저장할 수 있도록 arraylist보다는 어떤 방법이 있습니까? – nahid