[英]Expression language can't access getter methods
我有以下类users.java:
package org.XY;
public class user {
private String mail;
private String name;
private String org;
private String pw;
private String admin;
public user (String mail,String name,String org, String pw, String admin){
this.mail=mail;
this.name=name;
this.org=org;
this.pw = pw;
this.admin = admin;
}
public String getMail() {
return this.mail;
}
public String getName() {
return this.name;
}
public String getOrg() {
return this.org;
}
public String getPw() {
return this.pw;
}
public String getAdmin() {
return this.admin;
}
public String getUser() {
String u = this.mail + " | " + this.name + " | " + this.org + " | " + this.pw + " | Is admin:" + this.admin;
return u;
}
}
和以下jsp页面:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="org.XY" %>
<%@ page import="java.util.List" %>
<%@page isELIgnored="false"%>
<html>
<head>
<title>myservlet</title>
</head>
<body>
<%--<c:forEach items="${users}" var="user">
<tr>
<td><c:out value="${user.getMail()}" /></td>
<td><c:out value="${user.getName()}" /></td>
<td><c:out value="${user.getOrg()}" /></td>
<td><c:out value="${user.getPw()}" /></td>
<td><c:out value="${user.getAdmin()}" /></td>
</tr>
</c:forEach>--%>
<%
List<user> users = (List<user>) request.getAttribute("users");
for (user user : users) {
%>
${user.mail}
<%
}
%>
<%
for (user user : users) {
out.println("<li>" + user.getPw());
}
%>
...
我想创建一个表,其中包含来自用户的所有数据。 如您所见,我尝试对el使用$ {user.mail}方法。
两者都给我一个javax.el.PropertyNotFoundException: No public static field named [mail] was found on class [org.isse.sopro.user]
错误和java.lang.NoSuchFieldException: mail
错误javax.el.PropertyNotFoundException: No public static field named [mail] was found on class [org.isse.sopro.user]
。
我已经尝试过重命名getter方法,但是并没有解决问题。 有人可以告诉我我错了吗? 问候安迪
更新:显然,这与程序本身无关,而与Maven有关。 从Intellij完全重新加载后,maven重新加载了项目,一切正常。
您无法使用${user.mail}
因为未实现Serializable
您需要更改用户类实现Serializable
public class user implements Serializable{
}
而且您可以使用${user.mail}
代替${user.getMail()}
<c:forEach items="${users}" var="user">
<tr>
<td><c:out value="${user.mail}" /></td>
</tr>
</c:forEach>
尝试这个
<%--<c:forEach items="${users}" var="user">
<tr>
<td><c:out value="${user.mail}" /></td>
<td><c:out value="${user.name}" /></td>
<td><c:out value="${user.org}" /></td>
<td><c:out value="${user.pw}" /></td>
<td><c:out value="${user.admin}" /></td>
</tr>
</c:forEach>--%>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.