1

こんにちは、私が見つけた例に従っています

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/

問題は、投稿したプロフィールにエラーが見つからないことです。私はそうあるべきです。なぜこれが起こることができますか?

@Test
@Ignore
public void anotherTest() {
    Profile profile = ProfileUtil.getProfile();

    profile.setEmail("user@mail.com");
    profile.setSex("dafjsgkkdsfa");
    BindingResult bindingResult = new BeanPropertyBindingResult(profile, "profile");
    userController.postUser(new ModelMap(), profile, bindingResult);

    if (bindingResult.hasErrors()) {
        System.out.println("errors");
    }

    assertTrue(bindingResult.hasErrors());

    profileService.deleteProfile(profile);
}


@RequestMapping(value = "/", method = RequestMethod.POST)
public View postUser(ModelMap data, @Valid Profile profile, BindingResult bindingResult) {

        if (bindingResult.hasErrors()) {
            System.out.println("No errors");
            return dummyDataView;
        }

        data.put(DummyDataView.DATA_TO_SEND, "users/user-1.json");
        profileService.save(profile);
        return dummyDataView;
}

編集:これはプロファイルです。私は今性別をテストしているので、それが重要だと思います.

package no.tine.web.tinetips.domain;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import no.tine.web.tinetips.util.CommonRegularExpressions;

import org.hibernate.validator.constraints.NotBlank;


@Entity
public class Profile {

    @Id
    @GeneratedValue
    private Long id;

    @NotNull(message = "profile.email.null")
    @NotBlank(message = "profile.email.blank")
    @Size(max = 60, message = "profile.email.maxlength")
    @Pattern(regexp = CommonRegularExpressions.EMAIL, message = "profile.email.regex")
    @Column(name = "Email", unique = true)
    private String email;

    @Pattern(regexp = "^[M|F]{1}$", message = "profile.sex.regex")
@Size(max = 1, message = "profile.sex.maxlength")
private String sex;


}
4

1 に答える 1

1

基本的に、POJO をthis.userController = new UserController()でインスタンス化し、そのメソッドを呼び出しましたthis.controller.postUser(...)。Spring および Spring MVC とは関係なく、単純なオブジェクトを持つ単純な Java : @Valid は考慮されません。

機能させたい場合は、テスト クラスに Spring 情報を と で与える必要があり@RunWith(SpringJUnit4ClassRunner.class)ます@ContextConfiguration(...)。次に、Spring MVC 部分については、いくつかの Spring MVC 機能を介してコントローラーでリクエスト呼び出しをモックする必要があります。Spring MVC 3.0 以降または 3.1 以降を使用する場合は、別の方法で行われます。詳細と実際のコードについては、たとえば、この投稿とその回答を参照してください

于 2012-09-26T15:03:08.777 に答える