I am using Spring MVC for a web application and I am working with a simple form that deals with selecting clients and showing contact information.
One of the problems I am having is that If I select a client the first time, it will pull the information up, but the second time it wont. It will show the information from the previous client.
I looked more into what I was logging and I noticed that I was getting a data binding error and was seeing the all too familiar output on my console as the following.
Failed to convert property value of type [java.lang.String[]] to required type [java.lang.Integer] for property 'clientId'; nested exception is java.lang.NumberFormatException: For input string: "3349,4182"
If you see in the error output it shows
...for string: "3349,4182"
For reference the 3349 is the client-ID of the first customer selected, when the form is posted the 4182 is the client-ID of the second.
I have done some research and have come across people who have said that it doing something with treating the two numbers as an array of [3349,4182] as oppose to just taking the new ClientID.
Thanks,
Edit
The backing object is as follows
public class ClientContactModel implements Serializable { private String searchText; private Integer clientId; public ClientContactModel() { } public String getSearchText() { return searchText; } public void setSearchText(String searchText) { this.searchText = searchText; } public Integer getClientId() { return clientId; } public void setClientId(Integer clientId) { this.clientId = clientId; } }
The call that is throwing the NumberFormatException is
clientId = Integer.valueOf(request.getParameter("clientId"));
To answer your first question, yes, I am using a SimpleformController
Here is the UI Code pertaining to the client,
<pre><code><tr>
<td align="center">
<form:select path="clientId">
<form:option value="">Select a client...</form:option>
<form:options items="${clientUsers}" itemValue="id" itemLabel="username" />
</form:select>
<input type="button" name="selectButton" id="selectButton" value="Go" onclick="selectContact();">
</td>
</tr>
<tr>
<td align="center">
Display clients who have not updated their contact information since
<input name="month" type="text" id="textfield2" value="MM" size="4">
<input name="day" type="text" id="textfield3" value="DD" size="4">
<input name="year" type="text" id="textfield4" value="YY" size="4">
<input type="submit" name="notUpdatedButton" id="notUpdatedButton" value="Go">
</td>
</tr>
There is a little JS with it too
function selectContact() {
document.getElementById("searchText").value = "";
document.getElementById("clientContactObj").submit();
}