java.lang.NumberFormatException - 数据绑定错误

时间:2010-06-29 18:45:44

标签: java spring-mvc

我正在使用Spring MVC作为Web应用程序,我正在使用一个简单的表单来处理选择客户端和显示联系信息。

我遇到的一个问题是,如果我第一次选择客户端,它会提取信息,但第二次不会。它将显示来自先前客户的信息。

我更多地了解了我正在记录的内容,并且我注意到我收到了数据绑定错误,并且在控制台上看到了太熟悉的输出,如下所示。

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"

如果您在错误输出中看到它显示

...for string: "3349,4182"

作为参考,3349是所选第一个客户的客户ID,当表单发布时,4182是第二个客户ID。

我做过一些研究,并且遇到过这样的人,他们说这样做会将两个数字视为[3349,4182]的数组,而不是仅仅采用新的ClientID。

谢谢,



修改的 支持对象如下

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;
    }
}

抛出NumberFormatException的调用是

 clientId = Integer.valueOf(request.getParameter("clientId"));


要回答你的第一个问题,是的,我正在使用SimpleformController

以下是与客户有关的UI代码,

<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>

它也有一点JS

function selectContact() {
    document.getElementById("searchText").value = "";
    document.getElementById("clientContactObj").submit();
  }

1 个答案:

答案 0 :(得分:2)

您可以在列表中选择多个客户端吗?

如果是,您需要管理服务器中的多个ID(以逗号分隔的列表)。

如果不是,请在select中使用multiple = false以防止选择多个条目。