有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

即使存在getter,也会发生java PropertyNotFoundException

我正在开发一个小型消息传递web应用程序来学习jsp和servlet。我有一个具有以下属性的MessageModel类:

String toAddress ;
String fromAddress;
String messageSubject;
String messageContent;
Timestamp messageTime;
int messageDraft;

以及jsp访问的相应设置器

我有一个方法,可以查询数据库中的所有消息,以便将接收到的消息显示到特定的地址。然后,它创建一个新的MessageModel对象并将其存储在ArrayList中

public static ArrayList<MessageModel> getReceivedMessages(String toAddress) throws SQLException, ClassNotFoundException{
    // creates a arraylist.
    ArrayList<MessageModel> msgList = new ArrayList<MessageModel>();

    // Database connection code..

    // The query which gets the required messages from the database and adds them to the list.
    String query = "SELECT * FROM messages WHERE msg_to='" + toAddress +"' ORDER BY msg_date DESC";
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    if(rs.next()){
        while(rs.next()){
            String msgTo = rs.getString("msg_to");
            String msgFrom = rs.getString("msg_from");
            String msgSub = rs.getString("msg_subject");
            String msgCnt = rs.getString("msg_matter");
            Timestamp msgTime = rs.getTimestamp("msg_date");

            MessageModel model = new MessageModel(msgTo,msgFrom,msgSub,msgCnt,msgTime);
            msgList.add(model);
        }
    }
    return msgList;
}

我从jsp调用此方法,并使用

 String userName = (String) session.getAttribute("userId");
 ArrayList<MessageModel> list = MessageModel.getReceivedMessages(userName);
 pageContext.setAttribute("messageList", list);

但是,当我通过<c:forEach>标记访问列表中MesasgeModel对象的fromAddress属性时,我得到以下错误:

javax.el.PropertyNotFoundException: Property 'fromAddress' not found on type com.email.system.MessageModel

这是HTML的一部分,access打印出每个MessageModel对象的内容

<c:forEach items="${messageList}" var="message">
  <li><c:out value="${message.toAddress}"/>
      <c:out value="${message.messageSubject}"/> <c:out value="${message.messageTime}"/>
      <c:out value="${message.messageContent}"/> <c:out value="${message.fromAddress}"/> </li>
</c:forEach>

每当我试图访问toAddress字段时,就会发生错误。toAddress属性存储在messageSubject字段中,即使在mySql控制台中尝试相同的查询时,我在相应的列中获得了正确的字段

删除内容列的查询的可检查结果

msg_id  msg_to  msg_from  msg_subject  msg_date             msg_is_draft
4       bigb    remember  *subject*     2014-10-07 11:01:53  0
2       bigb    remember  *subject*     2014-10-07 10:48:43  0
1       bigb    remember  *subject*     2014-10-07 10:48:31  0

编辑:这是我拥有的MessageModel

public class MessageModel {
    String toAddress ;
    String fromAddress;
    String messageSubject;
    String messageContent;
    Timestamp messageTime;
    int messageDraft;

    public String getToAddress() {
        return toAddress;
    }

    public String getFromAddress() {
        return fromAddress;
    }

    public String getMessageSubject() {
        return messageSubject;
    }

    public String getMessageContent() {
        return messageContent;
    }


    public Timestamp getMessageTime() {
        return messageTime;
    }

    public int getMessageDraft() {
        return messageDraft;
    }

    public MessageModel(String toAddress,String fromAddress, String messageSubject, String messageContent,Timestamp messageTime){
        this.toAddress = toAddress;
        this.messageSubject = messageSubject;
        this.messageContent = messageContent;
        this.messageTime = messageTime;
        this.fromAddress = fromAddress;
    }

    public void sendMessage(MessageModel model){
        //Gets the related properties from the objects and stores it in the database
    }
    public static ArrayList<MessageModel> getReceivedMessages(String toAddress){
        //Gets the messages sent to 'toAddress'
    }
}

共 (1) 个答案

  1. # 1 楼答案

    事实证明,如果您对应用程序中使用的任何java源文件进行了一些更改,您必须进行完整的重建和重新部署,才能进行更改

    当我问我的问题时,我的代码中没有任何错误,我只是在更新资源,而不是重新部署。这只会更新对JSP的更改,而不是java源代码