Язык выражений не может получить доступ к методам получения - PullRequest
0 голосов
/ 07 мая 2019

У меня есть следующий класс 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());
    }
%>
...

Я хочу создать таблицу, которая содержит все данные от пользователей,Как видите, я попытался использовать метод $ {user.mail} с el.

Оба дают мне ошибку javax.el.PropertyNotFoundException: No public static field named [mail] was found on class [org.isse.sopro.user] и ошибку java.lang.NoSuchFieldException: mail.

Я уже пытался переименовать методы получения, но это не решило проблему.Может кто-нибудь сказать мне, что я не прав?С уважением, Анди

ОБНОВЛЕНИЕ: Очевидно, что речь шла не о самой программе, а о maven.После полной перезагрузки из Intellij maven перезагрузил проект, и все заработало нормально.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Нельзя использовать ${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>
0 голосов
/ 08 мая 2019

Попробуйте это

<%--<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>--%>
...