コントローラからシンプルなhtmlページを返したいのですが、ファイルの名前だけを取得し、コンテンツは取得しません。どうして?
これは私のコントローラーコードです:
@RestController
public class HomeController {
@RequestMapping("/")
public String welcome() {
return "login";
}
}
これは私のプロジェクト構造です:
[
@RestController
を次のように使用する場合:
@RestController
public class HomeController {
@RequestMapping("/")
public String welcome() {
return "login";
}
}
これは、通常のコントローラーでこれを行うのと同じです。
@Controller
public class HomeController {
@RequestMapping("/")
@ResponseBody
public String welcome() {
return "login";
}
}
@ResponseBody
を使用すると、return "login";
がStringオブジェクトとして返されます。返されるオブジェクトはすべて、HTTP本体にpayload
としてJSONとして添付されます。
これが、応答でlogin
だけを取得している理由です。
ModelAndView
を使用して試すことができます:
@RequestMapping("/")
public ModelAndView index () {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
以下の手順に従ってください
retunrn "index"
のような拡張子のないビューのファイル名を返す必要があります以下の依存関係を含めます。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>`
Kukkuzからの回答は、この依存関係をpomファイルに追加するまでは機能しませんでした。
<!-- Spring boot Thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
ガイドから こちら 。
here で概説されているレジストリリソースを更新します。
その後、正常に動作し始めました。将来、誰かが同じ問題に遭遇し、最初の回答を追っても問題が解決しない場合は、@ Kukkuzの回答のコードを利用した後、次の2つの手順に従ってください。
login.html
を使用する必要があります。 RestController
をController
に置き換えます
置換@RestController
with @Controller
。
置換@Restcontroller
with @controller
。 @Restcontroller
は、htmlおよびjspページではなくコンテンツのみを返します。
私はThymeleafを使用していませんが、それが私のために働いた唯一の方法は@Controller
クラス内および
@RequestMapping(method = RequestMethod.GET, value = "/")
public String index() {
return "index.html";
}
ここで返すString
:
return "login";
実際には、コンテンツ全体がブラウザに送り返します。
ファイルの内容を送り返す場合、1つの方法は次のとおりです。
あなたはこれで行くことができます 質問Springブートサービスでファイルをダウンロードするための答え
最も正確で最新の形式は、thymeleafIoC
のような、Model
を使用してエンドポイントメソッドに依存関係を設定することです。インスタンス...
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greeting(
@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
// returns the already proccessed model from src/main/resources/templates/greeting.html
}
}
完全な例を参照してください: https://spring.io/guides/gs/serving-web-content/
名前return "login";
のみを返すため、名前のみを取得します。 @RestController
であり、このコントローラーはビューではなくデータを返します。このため、メソッドから返すコンテンツのみを取得します。
この名前でビューを表示する場合は、Spring MVCを使用する必要があります この例を参照 。