0

これは何度も聞かれたかもしれませんが、この 2 日間、具体的な答えを見つけることができませんでした。Spring 3.2を使用。

私には2つの方法があります。1 つはフォームの作成用で、もう 1 つはフォームの投稿用です。フォームの作成は正常に機能します。しかし、フォームを投稿/送信しようとすると、ログ ステートメントがlogin()メソッドで実行されず、404 エラー HTTP ステータス 404 - /sample/login が表示されます。

問題は、フォームが URL に送信できないことだと思いますが、マッピングを修正して機能させる方法がわかりません。

他に必要なファイルがあれば教えてください。ところで、sprin/mvc-basic および spring/petclinic からの次の例

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import example.domain.User;
import example.service.UserValidator;


@Controller
@RequestMapping(value="/login")
public class LoginFormController {  

   protected final Log logger = LogFactory.getLog(getClass());

   @RequestMapping(method=RequestMethod.GET)
   public String loadForm(Model model) {
        logger.info("LoginFormController login");
        model.addAttribute("user", User.getUserInstance());
        return "login";
   }

   @RequestMapping(method=RequestMethod.POST)
   public String login(@ModelAttribute User user, BindingResult result) {
        logger.info("post");
        new UserValidator().validate(user, result);
        if (result.hasErrors()) {
            return "login";
         } else {
            logger.info("Email Id: " + user.getEmailId());
            //this.clinic.storeOwner(owner);
            //status.setComplete();
            return "redirect:/landing/" + user.getEmailId();
         }
   }
}

login.jsp

    <%@ include file="/WEB-INF/jsp/include.jsp"%>
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

    <html>
    <head>
    <title><fmt:message key="title" /></title>
    <style>
    .error {
        color: red;
    }
    </style>
    </head>
    <body>
        <h1>
            <fmt:message key="login.heading" />
        </h1>
        <form:form method="post" modelAttribute="user" action="login">
            <table width="95%" bgcolor="f8f8ff" border="0" cellspacing="0" cellpadding="5">
                <tr>
                    <td align="right" width="20%"><form:label for="emailId" path="emailId" cssErrorClass="error">Email ID:</form:label></td>
                    <td width="20%"><form:input path="emailId" /></td>
                    <td width="60%"><form:errors path="emailId" cssClass="error" /></td>
                </tr>
                <tr>
                    <td align="right" width="20%"><form:label for="password" path="password" cssErrorClass="error">Password:</form:label></td>
                    <td width="20%"><form:input path="password" /></td>
                    <td width="60%"><form:errors path="password" cssClass="error" /></td>
                </tr>
            </table>
            <br>
            <input type="submit" align="center" value="Login">
        </form:form>
        <a href="<c:url value="signup.htm"/>">Signup</a>
    </body>
    </html>

名前-servlet.xml

<bean....>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
   </bean>

 </bean>

あなたの助けに感謝します。

4

1 に答える 1

2

*.htmURL をDispatcherServlet(から推測) にマップしたよう/signup.htmです。フォーム タグのアクションを のlogin.htm代わりに変更しloginます。

<form:form method="post" modelAttribute="user" action="login.htm">
于 2012-12-18T09:52:28.507 に答える