我用的是Spring Boot和百里香。我想知道,如果静态字段的getter方法本身是静态的(不管setter是否是静态的),为什么会出现以下错误:
原因:org.springframework.beans.notreadablepropertyexception:bean类[rs.co.ucenikbean]的无效属性“rb”:bean属性“rb”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配?
字段是静态的,只有getter方法不是静态的,它才是可访问的。
类的代码:
public class UcenikBean implements Serializable {
static final long serialVersionUID = 1234L;
public static Integer rb = 0;
private String ime;
private String prezime;
private char pol;
private String datumRodjenja;
private String mejl;
private int razred;
private int odeljenje;
private String bojaOciju;
public UcenikBean() {
super();
idUcenik++;
// TODO Auto-generated constructor stub
}
public UcenikBean(String ime, String prezime, char pol, String datumRodjenja, String mejl,
int razred, int odeljenje, String bojaOciju) {
super();
idUcenik++;
this.ime = ime;
this.prezime = prezime;
this.pol = pol;
this.datumRodjenja = datumRodjenja;
this.mejl = mejl;
this.razred = razred;
this.odeljenje = odeljenje;
this.bojaOciju = bojaOciju;
}
public static Integer getRb() { // rb is not accesible if this is static
return rb;
}
public static void setRb(Integer rb) {
UcenikBean.rb = rb;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public String getIme() {
return ime;
}
public void setIme(String ime) {
this.ime = ime;
}
public String getPrezime() {
return prezime;
}
public void setPrezime(String prezime) {
this.prezime = prezime;
}
public char getPol() {
return pol;
}
public void setPol(char pol) {
this.pol = pol;
}
public String getDatumRodjenja() {
return datumRodjenja;
}
public void setDatumRodjenja(String datumRodjenja) {
this.datumRodjenja = datumRodjenja;
}
public String getMejl() {
return mejl;
}
public void setMejl(String mejl) {
this.mejl = mejl;
}
public int getRazred() {
return razred;
}
public void setRazred(int razred) {
this.razred = razred;
}
public int getOdeljenje() {
return odeljenje;
}
public void setOdeljenje(int odeljenje) {
this.odeljenje = odeljenje;
}
public String getBojaOciju() {
return bojaOciju;
}
public void setBojaOciju(String bojaOciju) {
this.bojaOciju = bojaOciju;
}
}
我的控制器中的相关代码:
@RequestMapping(value = {"/lista", "/"}, method = RequestMethod.GET)
public String lista(Model model) {
UcenikBean x = new UcenikBean("Marko", "Markovic", 'm', new Date(2010, 1, 3), "p@mail.com", 5, 5, "plava");
listaUcenika.add(x);
model.addAttribute("listaUcenika", listaUcenika);
model.addAttribute("ucenikBean", x);
return "lista";
}
@RequestMapping(value = {"/odabirUcenika"}, method = RequestMethod.POST)
public String ispis(Model model, UcenikBean ucenikBean,
String dodavanje, String menjanje, String brisanje) {
model.addAttribute("listaUcenika", listaUcenika);
model.addAttribute("ucenikBean", ucenikBean);
int x = ucenikBean.getRb();
return "lista";
}
这是lista页面:
<!DOCTYPE html>
<html xmlns:th="http://thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Lista Učenika</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin="anonymous">
</head>
<body>
<form class="form-group" id="formaUcenik" method="POST" action="/odabirUcenika"
th:action="@{/odabirUcenika}" th:object="${ucenikBean}">
<select th:if="${! listaUcenika.isEmpty()}" class="form-control" th:field="*{rb}">
<option th:each="ucenik : ${listaUcenika}"
th:value="${ucenikStat.index}"
th:text="${ucenikStat.index} + ' ' + ${ucenik.ime} + ' ' + ${ucenik.prezime}"/>
</select>
<input class="form-control" type="submit" value="Posaljite">
</form>
</body>
</html>
在本例中,用户输入的值应保存在“rb”字段中,并转移到下一个Map,在该Map中将打印到控制台。请解释一下,如果静态字段“rb”的getter方法也是静态的,那么为什么静态字段“rb”是不可访问的?
暂无答案!
目前还没有任何答案,快来回答吧!