我需要向用户显示注册用户,这里使用的是Struts2,我很新。但是我知道如何在不使用Struts2的情况下检索元素我将使用集合设置集合中的所有元素,我将把它放在请求范围内并转发到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>
答案 0 :(得分: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;
}
请记住,在使用迭代器或按索引访问对象之前,应在操作中填充集合。
答案 1 :(得分: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>