我正在使用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();
}
答案 0 :(得分:2)
您可以在列表中选择多个客户端吗?
如果是,您需要管理服务器中的多个ID(以逗号分隔的列表)。
如果不是,请在select中使用multiple = false以防止选择多个条目。