2017-09-05 4 views
0

私は特定の表示されたユーザを削除する責任を負うコントローラを作成しようとしています。これまでのところ、私はこのような何かを書いた:リクエストで特定のオブジェクト値をパス変数の引数を持つコントローラに送信する方法

@RequestMapping("delete/{user.id}") 
public String deleteUser(@PathVariable("user.id") String userId) 
{ 
    userRepository.delete(Long.parseLong(userId)); 
    return "panel"; 
} 

をそして私はまた、すべてのユーザが表示され、私のthymyleafテンプレートで動のテーブルを作成しました。

<tr th:each="user : ${userList}"> 
    <td th:text="${user.firstname}"></td> 
    <td th:text="${user.lastname}"></td> 
    <td th:text="${user.email}"></td> 
    <td th:text="${user.birthdate}"></td> 
    <td th:text="${user.password}"></td> 
    <td><a href="delete/${user.id}.html">Delete</a></td> 
    <td><a href="#">Edit</a></td> 
</tr> 

Unfortunatelly "delete/$ {user.id} .html"リクエストは機能しません。 謝礼はありますか?

ありがとうございます。

答えて

1

あなたが受け取ったエラー(もしあれば)は記述されていません。私はあなたが複数の問題を抱えていると思います。まず、URLから「.html」を削除します。これは、リクエストがRequestMappingアノテーションにあるパスと一致しないことを意味します。

また、userIdパラメータをlongに変更することをおすすめします。 Springは解析処理を行います。

@RequestMapping(method=RequestMethod.GET, path="delete/{user.id}") 

あなたは本当にパスパラメータの名前として「user.id」を使用する必要はありません。

public String deleteUser(@PathVariable("user.id") long userId) 

あなたは使わ予想されるHTTPメソッドを指定する必要があります。あなたは単に "id"を使うことができます。

@RequestMapping(method=RequestMethod.GET, path="delete/{id}") 
public String deleteUser(@PathVariable("id") long userId) 
+0

お返事ありがとうございます。私はこれらの推奨変更を行いましたが、以下のようにエラーが発生しました。私は** Whitelabelエラーページ**とこのようなメッセージを持っています: **予期しないエラーがありました(タイプ=不良リクエスト、ステータス= 400)。 タイプ 'java.lang.String'の値を必須タイプ 'java.lang.Long'に変換できませんでした。ネストされた例外はjava.lang.NumberFormatExceptionです:入力文字列: "$ {user" ** –

+0

あなたのThymeleafテンプレートに埋め込まれているURLが不正です。ブラウザーでリンクをクリックすると、URLにdelete/$ {user.id}が含まれ、/ 1は削除されません。 – Faron

関連する問題