2016-03-24 10 views
0

私は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

答えて

0

doRegister方法から@ResponseBodyを削除します。この注釈はhttp呼び出しへの応答として文字列を送信しています。

注釈がない場合、登録したビューリゾルバは、文字列を処理して対応するHTMLを表示しています。

+0

「HTTPステータス405 - リクエストメソッド 'POST'がサポートされていません」 – Robson021

+0

正しく動作していると思われるので、正しく動作しているはずです。 '@RequestBody User user'を試してください。 –

+0

まだ動作しません。 – Robson021

関連する問題