Невозможно привязать строку json к строке java - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь передать строку json в (POJO) строку Java, но в моем контроллере я не получаю эту строку json в виде строки Java.

Во внешнем интерфейсе,

<form th:action="@{/create/ads}" th:object="${createAds}" method="post">
    <div class="allWrap">
        <ul class="dropList odaberiteMarku" th:field="${brand}">

        </ul>
    </div>

    <div class="allWrap mt-s">
        <ul class="dropList odaberiteModel" th:field="${model}">

        </ul>
    </div>
</form>

В контроллере,

@RequestMapping(value="/create/ads", headers="Accept=application/json", method=RequestMethod.POST)
public String submitForm(@RequestBody @ModelAttribute CreateAds ads, BindingResult result, Model model) {
    if (result.hasErrors()) {
        return "test";
    }
    System.out.println(ads.getBrand()+", "+ads.getModels());
    return "successful";
}

В классе модели

public class CreateAds {
    private String brand;
    private String models;
    //other variables
    //all getters and setters 
}

В моем файле JSON.

[
  {
    "brand": "Acura",
    "models": [
      "2.2CL",
      "2.3CL",
      "3.0CL",
      "TL",
      "TSX",
      "Vigor",
      "ZDX"
    ]
  }
]

В интерфейсе: У меня есть внешний файл JSON, который используется для производителя автомобиля и модели автомобиля на основе производителя автомобиля.Он прекрасно работает во внешнем интерфейсе.

Во внутреннем интерфейсе: Я пытаюсь связать строку json с обычной строкой, как строка бренда json должна идти в строку бренда java, а строка моделей должна идти в строку java models,

Думаю, я не могу правильно связать строку json со строкой java, поэтому получаю нулевое значение.Так как я могу решить эту проблему?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Я не буду говорить о вашем коде пользовательского интерфейса.

Контроллер:

@PostMapping("/create/ads")
public String submitForm(@RequestBody CreateAds ads, BindingResult result, Model model){
    if (result.hasErrors()) {
        return "test";
    }
    System.out.println(ads.getBrand()+", "+ads.getModels());
    return "successful";
}

CreateAds:

public class CreateAds {
private String brand;
private ArrayList<String> models = new ArrayList<>();

   public String getBrand() {
        return brand;
   }

   public void setBrand(String brand) {
       this.brand = brand;
   }

   public ArrayList<String> getModels() {
      return models;
   }

   public void setModels(ArrayList<String> models) {
      this.models = models;
   }
}

Я обнаружил, что ваш объект JSON также неверен.Пожалуйста, обратитесь ниже JSON Object.

{
"brand": "Acura",
    "models": [
     "2.2CL",
     "2.3CL",
     "3.0CL",
     "TL",
     "TSX",
     "Vigor",
     "ZDX"
   ]
 }

Я использовал POSTMan и попробовал.Это рабочий код.Попробуй.

0 голосов
/ 28 января 2019

в дополнение к комментарию Томаса (извините, я пока не могу комментировать): ваша конечная точка принимает объект класса CreateAds, и вы показываете объявление POJO класса с именем Ads.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...