私はSpringのフレームワークを学び始めました。私はページにリダイレクトするのに問題があります。私はフロントエンドをより独立させたいので、純粋なhtmlを使用します(jspとは異なります)。私は(:http://localhost:8080/mywebapp/homeを次のようにブラウザSTHにとタイプ):GETメソッドを使用している場合、私はページに行くことができます春のhtml表示の応答
<mvc:annotation-driven/>
<context:component-scan base-package="controllers"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value=""/>
<property name="suffix" value=".html"/>
</bean>
<mvc:resources location="/resources/" mapping="/resources/**"></mvc:resources>
いくつかの基本的なコントローラは正常に動作します:私はこのようになります.xmlの設定を使用し
@Controller
@RequestMapping({"/", "/home"})
public class HomeController {
@RequestMapping(method=RequestMethod.GET)
public String goHome() {
System.out.println("HOME CONTROLLER");
return "resources/static/home"; // <-- name of the view (.html)
//return "home";
}
}
しかし、私が登録フォームとポストメソッドを使用した後にユーザーをリダイレクトしたい場合は、 "resources/static/home"というテキストの空白ページが表示されます。
コントローラは、次のようになります。
@Controller
@RequestMapping("/register")
public class RegisterController {
private static final Logger logger = Logger.getLogger(RegisterController.class);
@RequestMapping(method = RequestMethod.GET)
public String goRegister() { // this method works fine
return "resources/static/register";
}
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String doRegister(User user) { // this does not send user back to home page
logger.info("register new user request");
System.out.println(user.toString());
// TODO validation of user
return "resources/static/home";
}
}
Userクラスは、適切に、フォームからの値を設定し、代わりにバックホームページにリダイレクトする、私はテキストを空白のHTMLを取得しています。私は使用しようとしました:
return "redirect:resources/static/home";
でも動作しませんでした。
レジスタファイル:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Register your account here.</h1>
<form method="POST">
Name: <input type="text" name="firstName" /><br>
Surname: <input type="text" name="surname" /><br>
e-mail: <input type="email" name="email" /><br>
Password: <input type="password" name="password" /><br>
Retype password: <input type="password" name="repassword" /><br>
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
私はこのロジックを理解することはできません。なぜGETメソッドはビューを返すことができますが、POSTはそうではありません。
編集: 私は言及を忘れてしまった、私は.jspファイルのページを使用する場合、以前に、ほぼ同じコードがうまく働いていたし、もちろん、私は別の.xmlファイルの設定とコントローラを持っていた唯一のビュー名、例返される:
return "home";
EDIT2: これはソースです: https://github.com/robson021/InvoiceWriterFinal
「HTTPステータス405 - リクエストメソッド 'POST'がサポートされていません」 – Robson021
正しく動作していると思われるので、正しく動作しているはずです。 '@RequestBody User user'を試してください。 –
まだ動作しません。 – Robson021