Поле SpringBoot @Entity не отображается без геттера

Выполнение базовой работы Spring MVC и JPA. У меня есть следующий класс POJO:

@Entity
public class Alien
{
    @Id
    private int aId;
    private String aName;

// Standard getters and setters follow...

И контроллер отвечает на запрос getAlien() просто создав экземпляр этого класса и установив объект на странице:

@RequestMapping("/getAlien")
public ModelAndView getAlien(@RequestParam int aId)
{
    System.out.println("In getAlien controller");
    ModelAndView mv = new ModelAndView("showAlien.jsp"); // Can provide the view in constructor.
    Alien alien = repo.findById(aId).orElse(new Alien());
    mv.addObject(alien);
    return mv;
}

showAlien.jsp просто использует эти данные для печати:

Hello ${alien.aName}. Your ID is: ${alien.aId}.

Вот кое-что, что я заметил. Предположим, я хотел добавить String называется favProgLang как поле для моего Alien экземпляры:

public class Alien
{
    @Id
    private int aId;
    private String aName;
    private String favProgLang; // <--- The new field

// Standard getters and setters follow...

Я могу отрегулировать showDisplay.jsp чтобы использовать это поле:

Hello ${alien.aName}. Your ID is: ${alien.aId} and your favorite programming language is ${alien.favProgLang}.

Если я забуду добавить public получатель для favProgLang под моим Alien class, это возвращает код состояния 500, а в командной строке говорится:

javax.el.PropertyNotFoundException: The class 'com.jason.springbootjpa.model.Alien' does not have a readable property 'tech'.

Создание поля public и отпускание аксессора приводит к тому же поведению!

Как такое могло случиться? Разбор .jsp явно не использует никаких модификаторов доступа, он обращается к полям alienобъект напрямую. Я не могу представить себе ситуацию, когда доступ к полю осуществляется напрямую через EL в .jspfile, а затем происходит исчерпывающий поиск получателей поля с таким именем. Кроме того, почему не сразу вышло из коробки, когда я сделал поле public, даже отпуская геттер? Конечно, должно быть удовлетворительное объяснение. Идеи?

0 ответов

Другие вопросы по тегам