0

「ユーザーの更新」ページには、編集中の現在のユーザーの ID を保持する非表示フィールドがあります。HTML ソースを確認したところ、値が正しく入力されています。ただし、フォームを送信すると、userID 値は常に 0 として送信されますが、他のすべてのフィールドは正しく送信されます。

- タイプを form:input として設定して送信しようとしましたが、コントローラー側ではまだ 0 です。
-バインディング結果エラーはありません。
- ページ URL: /admin/update-user.html?uid=3 (URL 変数を uid から userID に変更してみましたが、違いはありません。)

それで一体何が起こっているのですか?明らかな何かが欠けていますか??

JSTL

<form:form commandName="user" method="POST">
<form:hidden path="userID"/>
<table width="400" cellpadding="3" cellspacing="0" border="0" class="datatable">
    <tr>
        <td>User ID #</td>
        <td>${user.userID}</td>
    </tr>
    <tr>
        <td valign="top">Password</td>
        <td>****<br /><a href="change-password.html?uid=${user.userID}">Change Password</a></td>
    </tr>
    <tr>
        <td>First Name</td>
        <td><form:input path="firstName" /></td>
    </tr>
    <tr>
        <td>Last Name</td>
        <td><form:input path="lastName" /></td>
    </tr>
    <tr>
        <td>Gender: </td>
        <td>
            <form:select path="gender">
                <form:option value="Male" label="Male" />
                <form:option value="Female" label="Female" />
            </form:select>
        </td>
    </tr>
    <tr>
        <td>Birthday: </td>
        <td><form:input path="birthday" id="datepickerpast" readonly="true" /></td>
    </tr>
    <tr>
        <td>Email</td>
        <td><form:input path="email" /></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" value="Update" /> <input type="reset"></td>
    </tr>
</table>
</form:form>

コントローラ

@RequestMapping(value = "admin/update-user", method = RequestMethod.POST)
public String processUpdateUser(ModelMap model, @ModelAttribute("user") User user, BindingResult result) throws SQLException {
    if (result.hasErrors()) {
        model.addAttribute("user", user);
        model.addAttribute("pagetitle", "Admin - Update User Details");
        return "admin/users/update-user";
    } else {
        userDao.updateUser(user);
        return "redirect:/admin/user-management.html";
    }
}

適切なゲッター/セッターを持つオブジェクト プロパティ

private int userID;
private String firstName;
private String lastName;
private String username;
private String email;
private Date birthday;
private String gender;
4

2 に答える 2

0

autoboxingが原因でコンパイラ エラーが発生しました。これにより、プリミティブからラッパー クラスの代替への自動変換が可能になります。getter が Integer を使用していたときになぜ機能しなかったのかについては、私はあなたを助けることができません。

于 2013-03-05T14:00:34.907 に答える
0

getter は Integer 型ですが、setter とプロパティは int 型であることに気付きました。それらをすべて整数にすると、うまくいきました。コンパイル時にエラーが発生しなかった理由、または元のように動作しなかった理由を誰かが説明できれば、それは大歓迎です。

はあ、私の人生は3時間です。

于 2013-03-04T22:22:17.563 に答える