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上使用。