1

我需要向用户展示注册用户,这里使用的是 Struts2,我很新。但我知道如何在不使用 Struts 2 的情况下检索元素,我将使用集合设置集合内的所有元素,并将其放入请求范围并转发到 JSP 页面,我将使用 JSTL 标记检索所有元素,但我不知道如何在 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>  
4

2 回答 2

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>  
于 2013-10-03T13:14:51.880 回答
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]}"/> 

其中 index 只是 中的另一个变量valueStack,您可以从迭代器中获取它,通过s:set标签在上下文中创建,或从操作中访问

public int getIndex(){
  return 0;
}

请记住,在使用迭代器或按索引访问对象之前,应在您的操作中填充集合。

于 2013-10-03T09:01:06.233 回答