2013-10-03 75 views
0

我需要向用戶顯示註冊用戶,這裏使用的是Struts2,我很新。但我知道如何在不使用Struts2的情況下檢索元素,我將使用collection設置集合中的所有元素,並且將它放在請求範圍中並轉發到JSP頁面,我將使用JSTL標記檢索所有元素,但我不會「知道如何做到這一點在Struts中2如何使用OGNL從Struts 2中檢索數據

package com.uttara.reg; 
import java.util.List; 
import java.util.Map; 
import org.apache.struts2.interceptor.SessionAware; 
import com.opensymphony.xwork2.ActionSupport; 
public class FetchRegisterdUserAction extends ActionSupport implements SessionAware{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private RegBean bean; 
    private Map session; 
    private List<RegBean> registerdUsers; 
    public String execute() throws Exception { 
     System.out.println("inside execute of FA excut"); 
     Model m = new Model(); 
     registerdUsers= m.getRegisterdUsers(); 
     if(registerdUsers!=null){ 
     setRegisterdUsers(registerdUsers); 
     System.out.println("inside success"); 
     return SUCCESS; 
     } 
     else{ 
      System.out.println("inside failure"); 
      return "failure"; 
     } 
    } 
    @Override 
    public void validate() { 
     System.out.println("inside validate of LA"); 
    } 
    public void setSession(Map session) { 
     // TODO Auto-generated method stub 

     System.out.println("inside setSession"); 
     this.session = session; 
    } 
    public List<RegBean> getRegisterdUsers() { 
     return registerdUsers; 
    } 
    public void setRegisterdUsers(List<RegBean> registerdUsers) { 
     this.registerdUsers = registerdUsers; 
    } 


} 

這是我的JSP代碼中我要去獲取單個元素,但它不工作

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<!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=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<h1>Registered Users</h1> 
<s:iterator value="registerdUsers"> 
<s:property value="#{registerdUsers.uname}"/> 
</s:iterator> 
+0

什麼你不能在JSTL需要使用Struts2的OGNL與做? –

+0

我不知道在哪裏存儲集合以轉發到struts 2中的jsp – user2838630

+0

'valueStack'是您正在尋找的地方。 –

回答

0

您可以通過訪問使用OGNL集合對象該指數。例如你有一個List收集

private List<String> myList; 

public List<String> getMyList(){ 
    return myList; 
} 

public void setMyList(List<String> myList){ 
    this.myList = myList; 
} 

現在在JSP中你可以使用一個迭代s:iterator標籤遍歷集合

<s:iterator value="myList"/> 
    <s:property/> 
</s:iterator> 

將會寫入JSP中收集的所有字符串值

如果你想得到個人價值,你可以通過索引來訪問它

<s:property value="%{myList[index]}"/> 

其中指數是在valueStack只是一個變量,你可以從迭代器得到它,通過s:set標籤,或從動作

public int getIndex(){ 
    return 0; 
} 

記住,一個收集應在填充接入的環境中創建您的在按照索引使用迭代器或訪問對象之前執行操作。

+0

嗨,你可以看到我的編輯上面我已經發布的代碼我所有檢索的元素是否存在rg如何將其設置爲registerdUsers – user2838630

+0

嗨thnks但迭代不工作可以üplz將我的 – user2838630

0

試試這個 爲registerdUsers創建getter和setter;

public String execute() throws Exception { 
     System.out.println("inside execute of LA"); 
     Model m = new Model(); 
     **List<RegBean> rg = m.getRegisterdUsers();** 
     if(rg!=null){ 
     setRegisterdUsers(rg); //set registerdUsers with rg 
     session.put("user", bean.getEmail()); 
     return SUCCESS; 
     } 

在JSP中

迭代它

<s:iterator value="registerdUsers"> 
<s:property value="registerdUsers.uname"/> 
</s:iterator> 
+0

嗨你能看到我的編輯上面 – user2838630

+0

上午沒有得到它 – user2838630

+0

創建RegisterterUser的getter和setter方法,然後將rg設置爲RegisterdUsers現在在您的jsp中迭代RegisterdUsers – xrcwrn

相關問題