How to send Optional parameters from angular and catch them in Java Controller?

tornikeShelia :

I'm trying to send "search" parameters to Spring Controller but keep getting the 400 bad request . I tried @RequestParam("personalNumber")String personalNumber but it still doesn't work, so now I'm trying to get the wrapper , can you suggest how to send wrapper info to Java controller ? (Wrapper has instances of other classes)

AngularJs

angular.extend($scope, {
    obj:{
        personalNumber:"",
        firstName:"",
        lastName:"",
        dateFrom:"",
        dateTo:""
    },

    loadCarLoan: urls.BASE_API + "user/getOnlineApplicationList",
    carLoanList:[

    ],

});


$scope.getCarLoan =  function () {
    $(".loader").show();
    console.log("In the angular");
    $http.post($scope.loadCarLoan + $.param($scope.obj))
      .success(function (response) {
        console.log(response);
        if(response.success){
            $scope.carLoanList = response;
        }
        $(".loader").hide();
    }).error(function () {
        $(".loader").hide();
        $scope.carLoanList = [];
    })
};

$scope.filter = function () {
    $scope.getCarLoan();
};

Java Controller :

@RequestMapping(value = "user/getOnlineApplicationList", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, method = RequestMethod.POST)
public @ResponseBody String getOnlineApplicationList(HttpSession session,
                                                     @RequestBody OnlineApplicationListWrapper wrapper) {

    System.out.println("In the Controller Java");

    HashMap<String, Object> jsonMap = new HashMap<>();

    Car car = wrapper.getCar();
    Loan loan = wrapper.getLoan();
    CustPaymentPlan cpp = wrapper.getCpp();
    NaturalPerson np = wrapper.getPerson();

    jsonMap.put("success", "true");
    jsonMap.put("car", car);
    jsonMap.put("loan", loan);
    jsonMap.put("cpp", cpp);
    jsonMap.put("np", np);

    System.out.println(wrapper.getCar().toString());
    System.out.println(wrapper.getLoan().toString());
    System.out.println(wrapper.getCpp().toString());
    System.out.println(wrapper.getPerson().toString());
    System.out.println("========");
    System.out.println(gson.toJson(jsonMap));

    return gson.toJson(jsonMap);

}
Lino :

You need to change:

@RequestParam("personalNumber") String personalNumber

To:

@RequestParam(value = "personalNumber", required = false) String personalNumber

The required = false indicates to spring that the parameter can be optional.

No need to create a wrapper

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=158399&siteId=1