私はTymeleafでSpring Bootを使用しており、かなり新しいです。私はTwitter APIを使ってアプリを作っています。私はth:each
を使って表示されたつぶやきのリストを持っています。ユーザーがツイートのリトウェットボタンをクリックすると、その特定のツイートのIDをリトウェットメソッドのパラメーターとしてコントローラーに送信し、リトウェットメソッドで処理できるようにする必要があります。ユーザーは、フロントエンドからのIDを認識すべきではありません。Springでのフォーム入力ではなく、コントローラへの変数の送信方法
今のところ、私の唯一の解決策は、「」タグ内のURLとIDが含まれており、それはコントローラで@PathVariable
を使用してパス変数として採用されており、つぶやきのリストを持っているインデックスページを返すことです。これはうまく動作しますが、私はこの方法が嫌いです。ユーザーがページを離れてはいけないので、あとでモーダルを使うほうがいいかもしれません。基本的には、IDをHTMLに表示せずにコントローラに送信する方法を知りたいです。
index.htmlを
<div class="result" th:each="result : ${results}">
<h3><a th:href="${result.fromUser}" th:text="${result.user.name}"></a></h3>
<p th:text="'@' + ${result.fromUser}"></p>
<span th:text="${result.text}"></span>
<div id="retweet">
<a th:href="'user/' + ${result.id}">Retwt</a>
</div>
</div>
Maincontroller.java
@RequestMapping(value = "")
public String getUserProfile(Model model) {
TwitterProfile userInfo = twitterService.getUserProfile();
List<Tweet> homeTimeline = twitterService.getUserTimeline();
model.addAttribute("profileImg", userInfo.getProfileImageUrl());
model.addAttribute("results", homeTimeline);
return "pages/index";
}
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String retweet(@PathVariable long id) {
twitterService.retweet(id);
return "/";
}
あなたはリロードせずにバックエンドにメッセージを送信する場合ページを表示するには、JavaScriptを使用してデータを送信する必要があります。これは、JavaScripts XMLHttp、またはそれを少し楽にするJQueryのようなフレームワークを使用して行うことができます。 –