在我的java代码中
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代码中
<%@ 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方法吗?
发布于 2018-06-15 04:21:11
JSP/Servlet引擎的设计遵循一些基本原则。这些原则中包括封装,您永远不应该让它直接访问您的类属性。在编译jsp时,EL表达式${tempStudent.firstName}将类似于com.luv2code.jsp.tagdemo.Student.getFirstName(),假设您遵循封装原则。
这是规范的一部分,您不能更改此行为。
发布于 2018-06-15 04:23:53
getter和setter是很好的封装工具。除了它们的主要目的之外,这些方法可能还包含一些逻辑。您可能想要检查特权是否getter和setter应该是可执行的,而且,您可能想要做一些不同的事情。例如,如果您设置了丈夫的姓氏,则可能还需要设置个人的姓氏。如果仅设置公共数据成员的值,则无法执行此操作。
https://stackoverflow.com/questions/50865092
复制相似问题