2010-12-05 8 views
1

J'essaie d'apprendre struts2, donc c'est une question assez simple.Afficher une ArrayList avec struts2 et jsp

J'ai une input_database.jsp page, et sa classe correspondante input_database.java

dans le fichier de classe j'ai une arraylist de cordes avec un mutator et un accesseur. Je veux l'afficher dans mon fichier .jsp

J'ai essayé d'utiliser un pour le faire, mais je pense que je fais quelque chose de fondamentalement faux.

Voici le code que j'ai essayé d'utiliser dans le fichier jsp. l'arraylist est une liste privée de chaînes appelée query_data. mon but ultime est d'afficher une liste d'arraylists de chaînes pour afficher mon instruction select, mais je dois d'abord trouver quelques chaînes simples. Si quelqu'un sait ce que je fais mal, ou peut me diriger vers un tutoriel que j'ai négligé ce serait génial

grâce

<s:iterator value="query_data" id="something"> 

      <s:property value="something"/><br /> 

</s:iterator> 

Répondre

6

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

Je n'ai pas réussi à faire fonctionner ce qui précède. J'ai cependant trouvé une solution de contournement. http://www.roseindia.net/jsp/usingbeansinjsp.shtml utilise java inline, appelé java beans je pense, pour le faire fonctionner à travers une classe de base de données séparée. – Chris

0

si vous souhaitez utiliser une liste you'r jsp page puis votre itérateur mais avant que cette vérification votre liste n'est pas vide ....

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

Here est un exemple de travail (projet Netbeans 6.9) illustrant comment itérer sur un tableau ou d'une liste d'objets.

De même, comment soumettre le formulaire de sorte que la liste des objets soit recréée lors de la soumission.

Simplement résoudre les références et y aller.

2

Dans l'étiquette de propriété, indiquez l'attribut de liste que vous souhaitez afficher. Supposons que vous ayez une classe déposée dans l'action List<User> userNames alors vous pouvez l'utiliser de la manière suivante. où la classe User a une propriété userName.

<s:iterator var="i" step="1" value="userNames"> 
     <s:property value="userName" ></s:property> 
    </s:iterator> 

ou si elle est un simple arrayList alors vous pouvez utiliser comme suit

List<Integer> integers; 

    <s:iterator var="i" step="1" value="integers"> 
     <s:property></s:property> 
    </s:iterator> 
+1

Ajouter un exemple de code pour en faire une bonne réponse – sharakan

+0

Hey Sumit, bienvenue sur Stackoverflow :) Ce serait génial si vous pouvez ajouter plus de détails à votre réponse afin que quelqu'un le lisant avec moins de contexte et de connaissances pourrait aussi être capable de le comprendre et être utile à quelqu'un à l'avenir aussi. – Amar

1
<s:iterator var="i" step="1" value="arraylistName"> 
<s:property value="fieldName"> 
</s:iterator> 

ArrayList "arrayListName" devrait avoir setter et getter dans l'action des entretoises. ArrayList serait d'un objet, fieldName est le nom de l'attribut contient par object.Like Car est l'objet et speed est son attribut.

+0

Cette solution fonctionne. J'ai initié le ArrayList à l'intérieur de la méthode qui était invisible dans JSP. Après l'initiation et le getter/setter globalement, cela fonctionne bien. Merci :) – Vigneshwaran