我正在使用GF4进行bean验证。我正在尝试在我的自定义验证程序中使用@Inject
服务bean,但我获得了null
值。自定义bean验证不会`@ inject` CDI bean并且不会插入消息?
public class TestValidator implements ConstraintValidator<>{
@Inject Service myService;
}
这是不是假设使用JEE7?
此外,我试图找到内置的动态消息插值(无需编写我自己的MessageInterpolator
)。我确实看到了一些例子,但它们不是很清楚。我正在寻找的是从ConstraintValidator.isValid
传递动态参数。例如:
Message_test = {值}无效
而不知何故编织此,以相同的方式,你可以静态例如内插Annotation
值size_msg = {min} - {max}超出范围。
谢谢您的回答。我正在使用'@Named @ ApplicationScoped'来定义我的服务。验证是通过JSF 2.2触发的,所以我认为它会通过CDI加载。在我的验证器中,我使用'@ Inject'来引用我的服务bean。 就hibernate而言,我不想将我的应用程序耦合到任何实现。 –
我设法解决了这个问题。如果在JSF bean上设置了验证注解,则该服务被正确注入。如果在JPA bean上设置了验证注解,那么它不是。我认为这是正常的,因为服务被定义为'@ Named/@ ApplicationScoped',所以它们在休眠CDI上下文中不可用。 –