2017-03-19 9 views
0

の特定の領域に戻って、私は、このhtmlファイル春コントローラ、ページ

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Getting Started: Handling Form Submission</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <h1>Form</h1> 
    <form action="#" th:action="@{/greeting}" th:object="${greeting}" method="post"> 
     <p>Id: <input type="text" th:field="*{id}" /></p> 
     <p>Message: <input type="text" th:field="*{content}" /></p> 
     <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p> 
    </form> 

    <div style="height: 1200px"> 
    </div> 

    <p id="rightHere"> 
     There there 
    </p> 
</body> 
</html> 

と、このコントローラを持っている:私は何をしようとしている

@GetMapping("/greeting") 
public String greetingForm(Model model) { 
    model.addAttribute("greeting", new Greeting()); 
    return "greeting"; 
} 

は#rightHere挨拶に戻っているが、私はそれを働かせることはできません。どのようにこれを行うための任意のアイデア?

+0

thymeleaf構文を知っているが、フォームのアクションが「/グリーティング#のrightHere」であることを確認してくださいしないでください。 JavaScriptを使用して、ページがロードされたときの位置をスクロールできます。 –

答えて

0

これは私のために働いたソリューションです:

@GetMapping("/greeting") 
public String greetingForm(Model model) { 
    model.addAttribute("greeting", new Greeting()); 
    return "redirect:greeting#rightHere"; 
} 
0

私は「return greeting#rightHere」と言っても意味がないと思います。これはハイパーリンクです.REST APIを作成している場合は、ハイパーリンクが返されます。 Springのようなフレームワークが#の後ろにあるものについて知っているかどうかはわかりません。 #はブラウザのためのものであり、存在する場合、その要素にスクロールします。私は間違っているかもしれませんが、私はSpring ControllerがURLの取得リクエストとgreeting#rightHeregreetingの違いを知っていないと考えています。これは、基本HTTPリクエストオブジェクトにアクセスすることなく(ほとんどの場合、同じでなければなりません。

これをテストすることをお勧めします。id = rightHereでhtml要素にジャンプすることがわかるように、ページにテキストがあることを確認してください。あなたのアプリにハイパーリンクがあり、どこかで/greeting#rightHereとなっていて、それが動作するかどうか確認してください。私はそう思うでしょう、あなたはSpringコントローラで何もする必要はありません。

編集:ここでは何が尋ねられているのかはっきりしないと思います。私はあなたのウェブページ/greeting#rightHereのリンクをクリックすると、Webブラウザがグリーティングページに移動して、idがrightHereのhtml要素にスクロールしたいと思っていたと思っていました。そして、私はあなたに、Springが#の後ろにあるものについて何かを知っていること、ブラウザが#であり、ブラウザ自体がURL /greeting#rightHereを見て、挨拶に移動して、HTML要素id rightHereで、ページが読み込まれたら一度スクロールしてください。

しかし、テンプレートでやるかJSPでインクルードするrightHere要素のように、コントローラが挨拶ページのサブセクションを返すようにすることを意味します。しかし、あなたが何を書いているのかわからないので、私が書いていることを理解していないように、あなたが何を求めているのかを判断することは難しく、2つの異なることについて話し合って戻ってジャンプする...あなたの質問を書き直して、正しい言語を使用して達成する。

+0

目標は、コントローラーの戻り値の後にページをロードするときに、そのブロックにただちにジャンプできるようにすることです。私が十分明確でないか、あなたの解決策を理解できなかったかどうかはわかりません。 – Majid

関連する問題