Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaEE7方法约束验证不需要';不要插手_Java_Jakarta Ee_Bean Validation_Java Ee 7_Wildfly 9 - Fatal编程技术网

JavaEE7方法约束验证不需要';不要插手

JavaEE7方法约束验证不需要';不要插手,java,jakarta-ee,bean-validation,java-ee-7,wildfly-9,Java,Jakarta Ee,Bean Validation,Java Ee 7,Wildfly 9,我正在尝试使用构造函数验证,如下所述: 我有一个简单的生产者字段,它提供了一个字符串 public class GreetingProducer { @Produces @Named("greeting") private String greeting = "Ron"; } 。。。它被注入到servlet中: @WebServlet(urlPatterns = "/test") @SuppressWarnings("serial") public class TestS

我正在尝试使用构造函数验证,如下所述:

我有一个简单的生产者字段,它提供了一个字符串

public class GreetingProducer {

    @Produces @Named("greeting")
    private String greeting = "Ron";

}
。。。它被注入到servlet中:

@WebServlet(urlPatterns = "/test")
@SuppressWarnings("serial")
public class TestServlet extends HttpServlet {

    private final String greeting;

    @Inject
    public TestServlet(@Named("greeting") @Size(min = 4) String greeting) {
        this.greeting = greeting;
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("Hello " + greeting);
    }

}
Wildfly 9上的部署不会产生任何错误,调用servlet会打印出
Hello Ron
,尽管部署应该会失败。我还尝试了不同风格的约束声明,但没有任何效果


你知道为什么验证没有生效吗?

在什么基础上会出现部署错误?事实上,您希望bean验证在什么基础上应用于servlet?我并不是说它不应该被应用,但它似乎针对的是Java EE的不同部分,而不是您试图使用它的地方。@JohnBollinger根据最新的定义,顶级Java类是(CDI)托管bean,如果它被任何其他Java EE技术规范定义为托管bean的话。在JavaEE容器中,Bean验证提供者必须与CDI集成,Bean验证要求CDIBean支持构造函数和方法验证。我认为它必须起作用;-)我不确定servlet是否会被视为“托管bean”。我认为类似于
@PostConstruct
等的技术也不能在servlet上使用。