SpringMVCを使用せずに通常のサーブレットに次のようなものがあると仮定します。
if(username == "X" && password =="Y"){
response.sendRedirect("./user/welcomePage.jsp");
}else{
response.sendRedirect("./login.jsp?wrongPass=true");
}
また、ユーザー名&&パスワードが間違っている場合は、login.jspページにリダイレクトした後、ユーザー名またはパスワードが間違っていることを、login.jspページのどこかで赤い色でユーザーに通知します。
<p style="color:red";
<%= (request.getParameter("wrongPass")==null)? "visibility:hidden":"" %>;">
Your username/password is wrong !</p>
私の質問は、次のような引数を渡す方法はありますか?
response.sendRedirect("./login.jsp?wrongPass=true");
Spring MVCコントローラーの内部?
このようなコントローラーがある場合はcoz:
@Controller
@RequestMapping(value ="/")
public class Welcome{
public String welcome(@RequestParam("j_username") String username,
@RequestParam("j_password") String password){
.
.
.
return "login";
ページを形成するために文字列を返す必要があるのと同じようにログとして&InternalResourceViewResolverが定義されているため:
<bean >class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
次のようにコントローラに引数を渡すと、InternalResourceViewResolverを使用した後に「login?wrongPass = true」を返し、次のようになります。
login?wrongPass=true.jsp Which is totally wrong ...
さて、この問題を(コントローラー内のモデルにその文字列を追加せずに)解決し、JSP内のパラメーターをフェッチするための解決策は何ですか?ブラウザのURLを次のようにしたいと思います。
http://localhost:8080/myProject/login.jsp?wrongPass=true