@ModelAttribute всегда отображает логическое значение на false - PullRequest
0 голосов
/ 19 сентября 2018

, когда я пытаюсь отобразить логическое значение из URL в контроллер пружины, оно всегда отображается в false.

Это мой URL

http://localhost:8080/myurl?isFirstTime=true

здесь мой контроллер

 @RequestMapping(value = "/myurl", method = RequestMethod.GET)
        public ResponseEntity<?>  getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {

//here isFirstTime is always set to false

}

MyObj - это POJO и имеет несколько других атрибутов, которые отлично отображаются

public class Myobj{

 private boolean isFirstTime
  //there are other members as well
    //getter setter

Я попытался поместить @JsonProperty, но это также не сработало

@JsonProperty
private boolean isFirstTime

любойПонятие, что я здесь делаю не так?

1 Ответ

0 голосов
/ 20 сентября 2018

С @ModelAttribute объект будет инициализирован:

  • Из модели, если она уже добавлена ​​через модель.
  • Из сеанса HTTP через @ SessionAttributes.
  • Из переменной пути URI, переданной через конвертер.
  • из вызова конструктора по умолчанию.
  • из вызова "основного конструктора" с аргументами, соответствующими параметрам запроса сервлета;имена аргументов определяются с помощью JavaBeans

В вашем случае это может относиться к последнему оператору.

Вы можете попробовать 2 способа решить его: - Предоставить конструктору логический аргументв Myobj.java - добавьте еще метод для инициализации @ModelAttribute Myobj в первую очередь

@ModelAttribute
public Myobj initObj(@RequestMapping boolean isFirstTime){
     Myobj obj = new MyObj();
     obj.setIsFirstTime(isFirstTime);
     return obj;
}
...