我正在尝试访问列表中存在的对象变量。该列表本身是对象的可变成员。我试图使用jsp表达式语言显示此变量,但收到此错误。
我的jsp页面如下
<h5> ${group1.group_name}</h5>
<div>
<ul class="list-group">
<li class="list-group-item title">
<strong style="display:inline;"> About: <h5 style="display: inline;"> ${group1.group_description}</h5></strong>
</li>
<c:forEach var="member" items="${members_list}">
<li class="list-group-item title">
<img src="${pageContext.request.contextPath}/css/images/user.png" class="img img-circle" style="display: inline" />
<strong style="display:inline;"> ${member.groupMembersList.member_name} <h5 style="display: inline;">(${member.groupMembersList.member_usertype})</h5></strong>
</li>
</c:forEach>
</ul>
</div>
</c:forEach>
我的servlet将值作为属性传递给上面的jsp
//current user's user-name
String currentUser = request.getParameter("username");
String group_name=null;
String GetGroupInfo = "select * from groups where creator_username=?";
//get all the groups where the creator's user-name is currentUser
try {
List<GroupObject> groups = new ArrayList<GroupObject>();
List<Group> SingleGroup = new ArrayList<Group>();
ps3 = currentCon.prepareStatement(GetGroupInfo);
ps3.setString(1,currentUser);
rs3 = ps3.executeQuery();
//set values for Group object
while(rs3.next())
{
GroupObject groupObj = new GroupObject();
Group group = new Group();
groupObj.setGroup_id(rs3.getString("group_id"));
groupObj.setGroup_name(rs3.getString("group_name"));
groupObj.setGroup_description(rs3.getString("group_description"));
group.setGroup_id(rs3.getString("group_id"));
group.setGroup_name(rs3.getString("group_name"));
group.setGroup_description(rs3.getString("group_description"));
SingleGroup.add(group);
String query = "select * from group_members where group_id=?";
ps = currentCon.prepareStatement(query);
ps.setString(1, groupObj.getGroup_id());
rs = ps.executeQuery();
List<GroupDetails> membersList = new ArrayList<GroupDetails>();
while(rs.next())
{
GroupDetails groupInfo = new GroupDetails();
groupInfo.setIs_admin(rs.getString("is_admin"));
groupInfo.setAdded_on(rs.getString("added_on"));
groupInfo.setCreator_username(rs.getString("creator_username"));
groupInfo.setGroup_name(rs.getString("group_name"));
groupInfo.setGroup_id(rs.getString("group_id"));
groupInfo.setUser_name(rs.getString("user_name"));
groupInfo.setMember_id(rs.getString("member_id"));
String memberFullname = "select firstname,lastname,user_type from users where username ='" + groupInfo.getUser_name() + "'";
ps2 = currentCon.prepareStatement(memberFullname);
rs2 = ps2.executeQuery();
if(rs2.next())
{
String member_fullname = rs2.getString("firstname") + " " + rs2.getString("lastname");
groupInfo.setMember_name(member_fullname);
groupInfo.setMember_usertype(rs2.getString("user_type"));
}
group_name = groupInfo.getGroup_name();
membersList.add(groupInfo);
}
groupObj.setGroupMembersList(membersList);
groups.add(groupObj);
}
//request group name
request.setAttribute("group_name",group_name);
request.setAttribute("individual_group", SingleGroup);
request.setAttribute("members_list", groups);
request.setAttribute("currentUser", currentUser);
RequestDispatcher rd = request.getRequestDispatcher("/ViewAllExistingGroups");
rd.forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
我的GroupDetails类
package pojo.group;
public class GroupDetails {
private String member_id;
private String user_name;
private String creator_username;
private String group_id;
private String group_name;
private String added_on;
private String is_admin;
private String member_name;
private String member_usertype;
public String getMember_id() {
return member_id;
}
public void setMember_id(String member_id) {
this.member_id = member_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getCreator_username() {
return creator_username;
}
public void setCreator_username(String creator_username) {
this.creator_username = creator_username;
}
public String getGroup_id() {
return group_id;
}
public void setGroup_id(String group_id) {
this.group_id = group_id;
}
public String getGroup_name() {
return group_name;
}
public void setGroup_name(String group_name) {
this.group_name = group_name;
}
public String getAdded_on() {
return added_on;
}
public void setAdded_on(String added_on) {
this.added_on = added_on;
}
public String getIs_admin() {
return is_admin;
}
public void setIs_admin(String is_admin) {
this.is_admin = is_admin;
}
public String getMember_name() {
return member_name;
}
public void setMember_name(String member_fullname) {
this.member_name = member_fullname;
}
public String getMember_usertype() {
return member_usertype;
}
public void setMember_usertype(String member_usertype) {
this.member_usertype = member_usertype;
}
}
欢迎任何帮助。如何从列表groupMembersList中存储的GroupDetails对象访问member_name属性,该对象本身是GroupObjects的变量。帮助jsp el plz
答案 0 :(得分:0)
您缺少member_name
。它可能会变为NULL并导致问题。你可能想说member_id
。您提供的代码在那里没有提到member_name
。我还要检查并确保应用程序进入if(rs.next()){...}
控制流程块,因为这会将member_name
分配到请求参数中。
<强>更新强>
在关于JSP中Java对象访问的评论之后,以下示例应该适合您
<p> Member Name :
<jsp:useBean id="your_object_name" class="package.with.class">
<jsp:getProperty name="your_object_name" property="member_name">
</p>
替换引号内的文本以正确使用您的类和包名称。