2015-08-06 1 views
1

Je suis en train d'entrer un POSTER JSON en utilisant Postman to localhost où j'ai une application Springboot en cours d'exécution.REST POST vers l'application Java renvoie la réponse JSON avec certains champs null

Le POST est:

{"applicantName":"On Gaber","amount":"5000","asset":"Car","creditScore":"602"} 

Contrôleur

@RestController 
public class LoanSubmissionController { 
private LoanService loanService; 
@Autowired 
public LoanSubmissionController(LoanService loanService) { 
    this.loanService = loanService; 
} 

@RequestMapping(method = RequestMethod.POST) 
@ResponseStatus(HttpStatus.CREATED) 
LoanApplicationDTO create(
     @RequestBody @Valid LoanApplicationDTO loanApplicationDTO) { 
    return loanService.create(loanApplicationDTO); 

} 

classe de service:

@Service 
public class LoanSubmissionService implements LoanService { 

@Autowired 
private final LoanApplicationRepository repository; 

@Autowired 
public LoanSubmissionService(LoanApplicationRepository repository) { 
    this.repository = repository; 
} 

// @Override 
public LoanApplicationDTO create(LoanApplicationDTO loanApplicationDTO) { 
    LoanApplication persisted = LoanApplication.getBuilder() 
      .applicantName(loanApplicationDTO.getApplicantName()) 
      .amount(loanApplicationDTO.getAmount()).build(); 
    persisted = repository.save(persisted); 
    return convertToDTO(persisted); 
} 

classe repository:

public interface LoanApplicationRepository extends 
    MongoRepository<LoanApplication, String> { 

@SuppressWarnings("unchecked") 
LoanApplication save(LoanApplication saved); 

DTO Classe:

package com.liquidlogic.loanprocessor.web; 

public final class LoanApplicationDTO { 

private String id; 
private String applicantName; 
private String amount; 
private String asset; 
private String creditScore; 

public LoanApplicationDTO() { 
} 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getApplicantName() { 
    return applicantName; 
} 

public void setApplicantName(String applicantName) { 
    this.applicantName = applicantName; 
} 

public String getAmount() { 
    return amount; 
} 

public void setAmount(String amount) { 
    this.amount = amount; 
} 

public String getAsset() { 
    return asset; 
} 

public void setAsset(String asset) { 
    this.asset = asset; 
} 

public String getCreditScore() { 
    return creditScore; 
} 

public void setCreditScore(String creditScore) { 
    this.creditScore = creditScore; 
} 

} 

classe Domaine:

import org.springframework.data.annotation.Id; 
import org.springframework.util.Assert; 

public class LoanApplication implements Application { 

@Id 
private String id; 
private String applicantName; 
private String amount; 
private String asset; 
private String creditScore; 

public LoanApplication() { 
} 

private LoanApplication(ApplicationBuilder builder) { 
    Assert.notNull(builder); 
    this.applicantName = builder.applicantName; 
    this.amount = builder.amount; 
    this.asset = builder.asset; 
    this.creditScore = builder.creditScore; 
} 

public static ApplicationBuilder getBuilder() { 
    return new ApplicationBuilder(); 
} 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getAmount() { 
    return amount; 
} 

public void setAmount(String amount) { 
    this.amount = amount; 
} 

public String getAsset() { 
    return asset; 
} 

public void setAsset(String asset) { 
    this.asset = asset; 
} 

public String getCreditScore() { 
    return creditScore; 
} 

public void setCreditScore(String creditScore) { 
    this.creditScore = creditScore; 
} 

public void setApplicantName(String applicantName) { 
    this.applicantName = applicantName; 
} 

public String getApplicantName() { 
    return applicantName; 
} 

@Override 
public String toString() { 
    return "LoanApplication [id=" + id + ", applicantName=" + applicantName 
      + ", amount=" + amount + ", asset=" + asset + ", creditScore=" 
      + creditScore + "]"; 
} 

public void update(String applicantName, String amount, String asset, 
     String creditScore) { 
    this.applicantName = applicantName; 
    this.amount = amount; 
    this.asset = asset; 
    this.creditScore = creditScore; 
} 

public static class ApplicationBuilder { 

    private String applicantName; 
    private String amount; 
    private String asset; 
    private String creditScore; 

    private ApplicationBuilder() { 
    } 

    public ApplicationBuilder applicantName(String applicantName) { 
     this.applicantName = applicantName; 
     return this; 
    } 

    public ApplicationBuilder amount(String amount) { 
     this.amount = amount; 
     return this; 
    } 

    public ApplicationBuilder asset(String asset) { 
     this.asset = asset; 
     return this; 
    } 

    public ApplicationBuilder creditScore(String creditScore) { 
     this.creditScore = creditScore; 
     return this; 
    } 

    public LoanApplication build() { 
     LoanApplication build = new LoanApplication(this); 
     return build; 
    } 

} 

} 

Springboot autowires et configure l'application entière. Il n'y a pas besoin d'une configuration web.xml ou Spring, Springboot fait tout.

application.properties:

logging.level.org.springframework.web=DEBUG 
spring.data.mongodb.host=localhost 
spring.data.mongodb.port=27017 

JSON Réponse:

{ 
    "id": "55c39c23f04a07251bc598b0", 
    "applicantName": "On Gaber", 
    "amount": "5000", 
    "asset": null, 
    "creditScore": null 
} 

Eclipse Abbreviated Sortie de la console:

: Started LoanApplicationProcessor in 5.258 seconds (JVM running for 6.012) 
: Successfully completed request 

Tous les champs du domaine et DTO sont t ype Chaîne. Je n'arrive pas à comprendre pourquoi les champs "asset" et "credtiScore" sont null. Des idées?

Répondre

0

Vous n'attribuez pas les valeurs de ces zones à la nouvelle entité dans la méthode public LoanApplicationDTO create(LoanApplicationDTO loanApplicationDTO), donc les valeurs ne sont pas conservées.

+0

OMG, quel mannequin. THX. Codage de vitesse - LOL – gohmer