0

過去2日間、この問題に直面しています。非常に多くの投稿を行ってきましたが、質問に対する解決策が見つかりませんでした。

実際には、Spring 検証を使用してログインフォームを検証しようとしていましたが、間違った入力をしたとしても、エラーは表示されず、すべての入力を受け入れます。

たとえば、電子メールに @NotEmpty および @Email アノテーションを使用しましたが、「user」などの単純な入力も受け入れます。 「無効な電子メール形式」としてエラーをスローする必要がありますが、このエラーは Bindingresult にバインドされません。

私のコントローラー:ContactController.java

import java.util.ArrayList;
import java.util.List;
import net.viralpatel.spring3.form.loginform;

import javax.validation.Valid;

import net.viralpatel.spring3.form.Contact;
import net.viralpatel.spring3.form.ContactForm;
import net.viralpatel.spring3.form.loginform;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
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 org.springframework.web.servlet.ModelAndView;@Controller{
@RequestMapping(value = "/get", method = RequestMethod.GET)
    public String get(ModelMap model) {
        loginform ud = new loginform();
         ud.setUser("");
         ud.setEmail("");
        model.addAttribute("lform",ud);
        return "login"; 

    }

    @RequestMapping(value="/login",method=RequestMethod.POST)
    public String loginCheck(@ModelAttribute("lform") @Valid loginform lform, BindingResult result, ModelMap model) {

        if (result.hasErrors()) {
            return "login";
        } else {
            model.addAttribute("lfobj", lform);
            return "success";        

        }
    }

私の login.jsp ファイル:

<form:form action="login.html" commandName="lform">
<table>
<tr>
    <td><font face="verdana" size="2px">User</font></td>
    <td>:</td>
    <td>
    <font face="verdana" size="2">
    <form:input path="user" /> <form:errors path="user"></form:errors>
    </font>
    </td>
</tr>
<tr>
    <td><font face="verdana" size="2px">Email</font></td>
    <td>:</td>
    <td>
    <font face="verdana" size="2">
    <form:input path="email" /> <form:errors path="email"></form:errors>
    </font>
    </td>
</tr>
<tr>
    <td><font face="verdana" size="2px">Phone</font></td>
    <td>:</td>
    <td>
    <font face="verdana" size="2">
    <form:input path="phone" /> <form:errors path="phone"></form:errors>
    </font>
    </td>
</tr>
<tr>
    <td><font face="verdana" size="2px">Blog</font></td>
    <td>:</td>
    <td>
    <font face="verdana" size="2">
    <form:input path="blog" /> <form:errors path="blog"></form:errors>
    </font>
    </td>
</tr>
<tr>
    <td>
    <input type="submit" value="Submit" />
    </td>
</tr>
</table>
</form:form>

私の loginform.java :

import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.URL;
import org.springframework.validation.BindingResult;

public class loginform{

        @NotEmpty
        private String user;

        @NotEmpty
        @Email
        private String email;        

        @NotEmpty(message = "Phone should not be blank.")
        @Size(min = 10,max = 10)
        private String phone;

        @NotEmpty(message = "Enter your blog URL")
        @URL
        private String blog;
//get & set methods
 }

私の spring-servlet.xml :

<context:annotation-config />
    <context:component-scan base-package="net.viralpatel.spring3.controller" /> 

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

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
       <property name="basename" value="props" />
    </bean>

これは、Spring 検証の最初のプログラムであるため、低くヒットする可能性がありますが、問題の解決策を親切に提供してください。

4

2 に答える 2

1

これを春の設定に追加してください:

<mvc:annotation-driven/>

これにより、Bean Validation が有効になります。

ドキュメント:リファレンス

于 2014-07-15T12:10:49.280 に答える
0

jsp フォーム タグに http メソッド属性がありませmethod="POSTん (フォーム データのこの属性がないと、http GET が送信され、これはリクエスト ハンドラー メソッドにバインドされます):

<form:form method="POST" action="login.html" commandName="lform">...
于 2014-07-15T07:34:41.167 に答える