Hi, I am reaching out in the hopes that I am overlooking something trivial. I don't see any problem with the url encodning post here. I can't get the details of my 400 Bad Request exception message despite my trying to catch it. It is possibly a class I am not mapping to in my handler.
Anyway, this works with a plain application/json post, but has problems with the posting via url encoding. I am not even reaching my controller , therefore I am fairly sure that this is a binding problem to my sample entity when url encoding is involved. It binds fine when I use @RequestBody and post using application/json, but has problems with @ModelAttribute when posting via urlencoding. What is it about my body for the urlencoding post that is a problem?
Bulk Edit Text
firstName:JohnTest
lastName:Stafford
birthDate:1990-08-07
driversLicenseNumber:080005900
address:1700NW36thTerraceYukonOklahoma
zip:73099
email:john.charles.stafford@gmail.com
homePhone:4055506800
workPhone:4055506800
amount:300
employer:meMyselfAndI
activeMilitary:0
incomeType:EMPLOYMENT
monthlyIncome:12000
date1:2016-12-02
date2:2016-12-16
frequency:TWICEMONTHLY
Controller method used for the x-www-formurlencoded POST
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public Lead save(@Valid @ModelAttribute("entity") final SampleEntity entity)
{
return createInternal(entity);
}
SampleEntity (again, this works for an application/json POST)
@Entity
@Table(name="sample_table")
public class SampleEntity implements IBaseEntity{
/**
*
*/
private static final long serialVersionUID = -1110216193971231355L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "first_name")
@NotNull
private String firstName;
@Column(name = "last_name")
@NotNull
private String lastName;
@Column(name = "birth_date")
@NotNull
private String birthDate;
@Column(name = "drivers_license_number")
@NotNull
private String driversLicenseNumber;
@Column
@NotNull
private String address;
@Column
@NotNull
private String zip;
@Column
@NotNull
private String email;
@Column(name = "home_phone")
@NotNull
private String homePhone;
@Column(name = "work_phone")
@NotNull
private String workPhone;
@Column(name = "requested_amount")
@NotNull
private String requestedAmount;
@Column
@NotNull
private String employer;
@Column(name = "active_military")
@NotNull
private String activeMilitary;
@Column(name = "income_type")
@NotNull
private String incomeType;
@Column(name = "monthly_income")
@NotNull
private String monthlyIncome;
@Column
@Temporal(TemporalType.DATE)
@NotNull
private Date date1;
@Column
@Temporal(TemporalType.DATE)
@NotNull
private Date date2;
@Column(name = "frequency")
@NotNull
private String frequency;
//getters and setters
Any help greatly appreciated. Thanks.
had to add BindingResult to my parameters to catch the problem. After doing this, it was quite apparent to me that ModelAttribute was not able to bind the string from my post for dates and convert it it into java.util.Date . Needed to add InitBinding custom converter to my controller class.