0

I am new to Spring boot, and was trying to create a post api to post the following json to. However, when I do a get on the api, for the nested elements, null values are displayed.

Json Request:

{
  "messageType": "abcd",
  "messageVersion": "1.1.0",
  "p_messageVersion": "1.095",
  "acsTransID": "6834628",
  "p_formValues_BRW": {
    "action": "http://10.10.65.96:8080/CORE/Test.htm",
    "correctFormData": "1234",
    "incorrectFormData": "0000",
    "cancelFormData": "true"
  }
}

Response on Doing a Get:

[{"acsTransID":"6834628","p_messageVersion":"1.095","messageVersion":"1.1.0","messageType":"abcd","p_formValues_BRW":{"action":null,"correctFormData":null,"incorrectFormData":null,"cancelFormData":null}}]

My Model Object

public class Product {
       @JsonProperty("acsTransID")
       private String acsTransID;
       
       @JsonProperty("p_messageVersion")
       private String p_messageVersion;
       
       @JsonProperty("messageVersion")
       private String messageVersion;
       
       @JsonProperty("messageType")
       private String messageType;
       
       @JsonProperty("p_formValues_BRW")
       private p_formValues_BRW p_formValues_BRW;
       
       public Product(p_formValues_BRW p_formValues_BRW) {
           this.p_formValues_BRW=p_formValues_BRW;
       }
       
       public Product() {
           
       }
       

       public String getacsTransID() {
          return acsTransID;
       }
       public void setacsTransID(String acsTransID) {
          this.acsTransID = acsTransID;
       }
       public String getp_messageVersion() {
          return p_messageVersion;
       }
       public void setp_messageVersion(String p_messageVersion) {
          this.p_messageVersion = p_messageVersion;
       }
       
       public String getmessageVersion() {
              return messageVersion;
           }
       
       public void setmessageVersion(String messageVersion) {
              this.messageVersion = messageVersion;
           }
       
       public String getmessageType() {
              return messageType;
           }
       
       public void setmessageType(String messageType) {
              this.messageType = messageType;
           }
       

       public p_formValues_BRW getp_formValues_BRW() {
       return p_formValues_BRW;
       }

       
       public void setp_formValues_BRW(p_formValues_BRW p_formValues_BRW) {
       this.p_formValues_BRW = p_formValues_BRW;
       }
       
/*     
       public Product withPFormValuesBRW(PFormValuesBRW pFormValuesBRW) {
           this.pFormValuesBRW = pFormValuesBRW;
           return this;
           }*/
           
}

class p_formValues_BRW {
    
    @JsonProperty("action")
    private String action;
    
    @JsonProperty("correctFormData")
    private String correctFormData;
    
    @JsonProperty("incorrectFormData")
    private String incorrectFormData;
    
    @JsonProperty("cancelFormData")
    private String cancelFormData;

    
    public String getaction() {
    return action;
    }

    public void setaction(String action) {
    this.action = action;
    }


    public String getcorrectFormData() {
    return correctFormData;
    }


    public void setcorrectFormData(String correctFormData) {
    this.correctFormData = correctFormData;
    }


    public String getincorrectFormData() {
    return incorrectFormData;
    }


    public void setincorrectFormData(String incorrectFormData) {
    this.incorrectFormData = incorrectFormData;
    }


    public String getcancelFormData() {
    return cancelFormData;
    }


    public void setcancelFormData(String cancelFormData) {
    this.cancelFormData = cancelFormData;
    }


}

My Controller

@RestController
public class ProductServiceController {
    

   private static Map<String, Product> productRepo = new HashMap<>();

   @RequestMapping(value = "/products", method = RequestMethod.POST)
   public ResponseEntity<Object> createProduct(@RequestBody Product product, p_formValues_BRW p_formValues_BRW) {
       product.setp_formValues_BRW(p_formValues_BRW);
      productRepo.put(product.getacsTransID(), product);
//      productRepo.put(product., PFormValuesBRWRepo);
      return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED);
   }
   
   @RequestMapping(value = "/products")
   public ResponseEntity<Object> getProduct() {    
      return new ResponseEntity<>(productRepo.values(), HttpStatus.OK);
   }
}

What I am doing wrong. Also, would it be better to use JPARepositories and @autowired.

2 Answers 2

1

You don't need to add p_formValues_BRW in createProduct() function's parameter separately, because on your JSON Request you pass p_formValues_BRW as nested object.

So on your controller when you hit "/products" you will get p_formValues_BRW in Product, so function after changes look like this:

@RequestMapping(value = "/products", method = RequestMethod.POST)
   public ResponseEntity<Object> createProduct(@RequestBody Product product) {

       product.setp_formValues_BRW(product.getp_formValues_BRW());
      productRepo.put(product.getacsTransID(), product);
//      productRepo.put(product., PFormValuesBRWRepo);
      return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED);

   }
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, this worked. I am getting started with Spring, and thanks for the push.
0

As you already giving p_formValues_BRW in request body, you need not add it in Product.

@RequestMapping(value = "/products", method = RequestMethod.POST)
public ResponseEntity<Object> createProduct(@RequestBody Product product) {
  productRepo.put(product.getacsTransID(), product);
  // productRepo.put(product., PFormValuesBRWRepo);
  return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED);
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.