0

プラットフォーム: JBoss AS 7。

JSR 303 Bean 検証と要求スコープの CDI マネージド Bean で奇妙な動作が見られます。システムは検証ルールを適用していないようで、常に検証に合格します。

以下はコードスニペットです。

@Named
@RequestScoped
class Person {
    @Size(min=3, max=25, message="Please enter a valid name")
    private String firstName;
    //Getters and setters...
}

@WebServlet("/ValidationTest")
public class ValidationTest extends HttpServlet {
    @Inject
    Person p1;

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        p1.setFirstName("A");
        validate(p1);

        Person p2 = new Person();
        p2.setFirstName("B");
        validate(p2);
    }

    public void validate(Object o) {
        ValidatorFactory validatorFactory = null;
        validatorFactory = Validation.buildDefaultValidatorFactory();
        ValidatorContext validatorContext = validatorFactory.usingContext();
        javax.validation.Validator beanValidator = validatorContext
                .getValidator();

        Set<ConstraintViolation<Object>> violations = beanValidator.validate(o);

        System.out.println("Object is valid: " + violations.isEmpty());
    }
}

これからの出力は次のとおりです。

Object is valid: true
Object is valid: false

注入された Bean p1 は有効であると見なされますが、これは発生すべきではありません。p2 の検証が失敗しますが、これは予想どおりです。Person Bean の依存スコープを作成すると、p1 は正しく無効であると見なされます。私は何を間違っていますか?

編集: TomEE で動作を複製しました。だから、私は何か間違ったことをしているに違いない。

4

0 に答える 0