Display an ArrayList with struts2 and jsp

48,010

Solution 1

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>

Solution 2

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>

Solution 3

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

Share:
48,010
Chris
Author by

Chris

Updated on July 06, 2022

Comments

  • Chris
    Chris almost 2 years

    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

    <s:iterator value="query_data" id="something">
    
                <s:property value="something"/><br />
    
    </s:iterator>
    
  • Chris
    Chris over 13 years
    I was unable to get the above to work. I did however find a workaround. roseindia.net/jsp/usingbeansinjsp.shtml uses inline java, called java beans i think, to get it to work through a seperate database class.
  • Amar
    Amar over 11 years
    Hey Sumit, welcome to Stackoverflow :) It would be great if you can add more detail to your answer so that someone reading it with less context and knowledge might also be able to understand it and be of use to someone in future too.
  • Vigneshwaran
    Vigneshwaran over 6 years
    This solution works. I have initiated the ArrayList inside the method which has been invisible in JSP. After globally initiated and getter/setter it works fine. Thanks :)