简体   繁体   English

POST嵌套对象Rest Spring MVC AngularJS

[英]POST nested object Rest Spring MVC AngularJS

I am trying to resolve a problem with saving an entity that has one-to-one relationship. 我正在尝试解决保存具有一对一关系的实体的问题。

I have a Tenant object that has a field Apartment. 我有一个租户对象,有一个字段公寓。 Every time when I try to save a new Tenant object I get 400 error although the params seems ok to me: 每当我尝试保存一个新的Tenant对象时,我会得到400错误,尽管params对我来说似乎没问题:

Params : 参数
PARAMS

Response: 响应: 响应

If I remove Apartment from the input form the Tenant gets to be saved without a problem. 如果我从输入表单中删除了公寓,则可以毫无问题地保存租户。

How can I save an entity along with it's relation??? 如何保存实体及其关系???

RestController RestController

@RequestMapping(method = RequestMethod.POST)
    public ResponseEntity<?> create(@Valid @RequestBody Tenant tenant, BindingResult result) {
        if (result.hasErrors()) {
            ApiResponse message = new ApiResponse();
            message.setErrors(result.getFieldErrors());
            return new ResponseEntity<ApiResponse>(message, HttpStatus.UNPROCESSABLE_ENTITY);
        }
        try {
            service.saveTenant(tenant);
        } catch (ConstraintViolationException e) {
            result.rejectValue("apartmentNumber", "error.apartment", DUPLICATE_VALUE);

            Map<String, String> test = new HashMap<>();
            for (FieldError fieldError : result.getFieldErrors()) {
                test.put(fieldError.getField(), fieldError.getDefaultMessage());
            }
            return new ResponseEntity<Map<String, String>>(test, HttpStatus.CONFLICT);
        }
        return new ResponseEntity<Tenant>(tenant, HttpStatus.CREATED);
    }

JSP page - the input in question JSP页面 - 有问题的输入

<div class="form-group">
    <label for="inputEmail3" class="col-sm-3 control-label">Mieszkanie</label>
    <div class="col-sm-9">
        <select name='apartment' ng-model="ctrl.tenant.apartment" ng-required='true' class="form-control">
          <option ng-repeat="item in ctrl.apartments" value="{{item}}"
          ng-selected="ctrl.tenant.apartment.description == item.description">
            {{item.description}}</option>
        </select>
        <p class="help-block">
            <span class='error' ng-show="myForm.tenant_apartment.$invalid">
              Pole wymagane</span> <span class='error'>{{errors.tenant_apartment}}</span>
        </p>
    </div>
</div>

Is your Tenant class has a member variable of Appartment as Set type. 您的租户类是否具有Appartment as Set type的成员变量。 I mean 我的意思是

public class Tenant implements Serializable {

    private Set<Appartment> appartment;
    .....
    .....
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM