I am trying to learn struts2, so this is a pretty basic question.
I have a page input_database.jsp, and its corresponding class input_database.java
in the class file I have an arraylist of strings with a mutator and an accessor. I want to display it inside my .jsp file
I've been trying to use a to do it, but I think I'm doing something fundamentally wrong.
here's the code I've been trying to use in the jsp file. the arraylist is a private list of strings called query_data. my ultimate goal is to display an arraylist of arraylists of strings to display my select statement, but I need to figure out some simple strings first. If anyone knows what I'm doing wrong, or can point me to a tutorial that I've overlooked that'd be awesome
thanks
开发者_StackOverflow<s:iterator value="query_data" id="something">
<s:property value="something"/><br />
</s:iterator>
Display.java
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class Display extends ActionSupport{
private static final long serialVersionUID = 1L;
List<PhoneBean> list = null;
public List<PhoneBean> getList() {
return list;
}
public void setList(List<PhoneBean> list) {
this.list = list;
}
public String execute() throws Exception{
list = new ArrayList<PhoneBean>();
PhoneBean bean = new PhoneBean();
bean.setName("juan dela cruz");
bean.setAge(17);
bean.setBirthDate(Date.valueOf("1987-1-1"));
bean.setContactNumber("12345");
list.add(bean);
bean = new PhoneBean();
bean.setName("john cruise");
bean.setAge(14);
bean.setBirthDate(Date.valueOf("1988-2-2"));
bean.setContactNumber("67890");
list.add(bean);
return SUCCESS;
}
}
PhoneBean.java
import java.sql.Date;
public class PhoneBean {
private String name = null;
private int age = 0;
private Date birthDate = null;
private String contactNumber = null;
public String getContactNumber() {
return contactNumber;
}
public void setContactNumber(String contactNumber) {
this.contactNumber = contactNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
}
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="Display" class="phoneBook.Display">
<result>/display.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
display.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:iterator status="stat" value="list">
<s:property value="name"/> <s:property value="age"/>
<s:property value="birthDate"/> <s:property value="contactNumber"/>
</s:iterator>
</body>
</html>
In property tag give the list attribute which you want to display.
suppose you have a filed in action class List<User> userNames
then you can use it in the following manner. where User class has a property userName.
<s:iterator var="i" step="1" value="userNames">
<s:property value="userName" ></s:property>
</s:iterator>
or if it is a simple arrayList then you can use as follows
List<Integer> integers;
<s:iterator var="i" step="1" value="integers">
<s:property></s:property>
</s:iterator>
<s:iterator var="i" step="1" value="arraylistName">
<s:property value="fieldName">
</s:iterator>
ArrayList "arrayListName" should have setter and getter in struts action. ArrayList would be of some object ,fieldName is the name of the attribute contain by object.Like Car is the object and speed is its attribute.
if you want to use a list in you'r jsp page then your iterator but before that check your list is not empty....
<s:iterator value="customerList" status="userStatus">
<tr>
<td><s:property value="customerId" /></td> // Value is Y'r POJO Field
<td><s:property value="name" /></td>
<td><s:property value="address" /></td>
</tr>
</s:iterator>
Here is a working example(Netbeans 6.9 project) illustrating how to iterate over an array or list of objects.
Also, how to submit the form such that the list of objects gets re-created on submission.
Simply resolve the references and get going.
精彩评论