首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果在java文件中未使用getter和setter,则JSP会给出错误

如果在java文件中未使用getter和setter,则JSP会给出错误
EN

Stack Overflow用户
提问于 2018-06-15 04:04:39
回答 2查看 786关注 0票数 2

在我的java代码中

代码语言:javascript
复制
package com.luv2code.jsp.tagdemo;
public class Student {
    public String firstName;
    public String lastName;
    public boolean goldCustomer;
    public Student(String firstName, String lastName, boolean goldCustomer) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.goldCustomer = goldCustomer;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public boolean isGoldCustomer() {
        return goldCustomer;
    }
    public void setGoldCustomer(boolean goldCustomer) {
        this.goldCustomer = goldCustomer;
    }

}

在JSP代码中

代码语言:javascript
复制
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*,com.luv2code.jsp.tagdemo.Student" %>
<%
    ArrayList<Student> data=new ArrayList<>();
    data.add(new Student("Subhajit","Maity",true));
    data.add(new Student("Biswajit","Kundu",true));
    data.add(new Student("Sourav","Das",false));
    pageContext.setAttribute("myStudent", data);
%>

<html>
<head>
</head>
<body>
<c:forEach var="tempStudent" items="${myStudent}">
    ${tempStudent.firstName}
</c:forEach>

</body>
</html>

如果我使用getter和setter方法来设置和获取名字、姓氏和黄金客户,那么代码可以在不使用getter和setter的情况下工作。它提供error.If我声明类变量为公共变量,然后它可以在任何地方访问,那么我应该使用getter和setter方法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-15 04:21:11

JSP/Servlet引擎的设计遵循一些基本原则。这些原则中包括封装,您永远不应该让它直接访问您的类属性。在编译jsp时,EL表达式${tempStudent.firstName}将类似于com.luv2code.jsp.tagdemo.Student.getFirstName(),假设您遵循封装原则。

这是规范的一部分,您不能更改此行为。

票数 2
EN

Stack Overflow用户

发布于 2018-06-15 04:23:53

getter和setter是很好的封装工具。除了它们的主要目的之外,这些方法可能还包含一些逻辑。您可能想要检查特权是否getter和setter应该是可执行的,而且,您可能想要做一些不同的事情。例如,如果您设置了丈夫的姓氏,则可能还需要设置个人的姓氏。如果仅设置公共数据成员的值,则无法执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50865092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档