java - 验证约束仅适用于一个领域。Bean 验证 API
问题描述
我在更改表单中的验证消息时遇到问题,我一直在做一些研究并发现了验证约束。
首先,我想验证数据不为空,所以我使用了@NotNull 约束,但它不适用于所有约束,只是代码中的一个,我不知道为什么。
我正在使用 JPA 2.1 EclipseLink
这是豆子:
package cl.beans;
import cl.pojos.Empresa;
import cl.pojos.Hardware;
import cl.pojos.IndiceHardwareFabricante;
import cl.pojos.Software;
import cl.services.EmpresaFacadeLocal;
import cl.services.HardwareFacadeLocal;
import cl.services.IndiceHardwareFabricanteFacadeLocal;
import cl.services.SoftwareFacadeLocal;
import java.util.List;
import javax.ejb.EJB;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.validation.constraints.NotNull;
@Named(value = "productoBean")
@RequestScoped
public class ProductoBean {
@EJB
private EmpresaFacadeLocal empresaFacade;
@EJB
private IndiceHardwareFabricanteFacadeLocal indiceHardwareFabricanteFacade;
@EJB
private SoftwareFacadeLocal softwareFacade;
@EJB
private HardwareFacadeLocal hardwareFacade;
// Variables generales de producto
private int id;
private String nombre;
private Integer costoCliente;
private Integer costo;
private int idFabricante;
// Variables para crear un Hardware
private String modelo;
private Integer numeroSerie;
private String tipoHardware;
//--
// Variables para crear un Software
private String tipoSoftware;
private int tipoProducto;
public ProductoBean() {
}
public List<Software> getSoftwares(){
return softwareFacade.findAll();
}
public List<Hardware> getHardwares(){
return hardwareFacade.findAll();
}
public String getFabricanteHardware(int idHard){
IndiceHardwareFabricante indi = indiceHardwareFabricanteFacade.find(idHard);
Empresa emp = empresaFacade.find(indi.getIdFabricante());
return emp.getNombrePersona();
}
public String getNombreFabricante(int idFab){
Empresa emp = empresaFacade.find(idFab);
return emp.getNombrePersona();
}
public String crearProducto(){
if (tipoProducto == 1) {
int idAutomatico = hardwareFacade.count();
idAutomatico = idAutomatico + 1;
Hardware h = new Hardware();
h.setIdHardware(idAutomatico);
h.setNombreHardware(nombre);
h.setModelo(modelo);
h.setNumeroSerie(numeroSerie);
h.setCostoClienteHardware(costoCliente);
h.setCostoHardware(costo);
IndiceHardwareFabricante indiHardFab = new IndiceHardwareFabricante();
indiHardFab.setIdFabricante(idFabricante);
indiHardFab.setIdHardware(h.getIdHardware());
indiceHardwareFabricanteFacade.create(indiHardFab);
hardwareFacade.create(h);
nombre = null;
return "/ingresarProducto.xhtml?faces-redirect=true";
} else if (tipoProducto == 2) {
int idAutomatico = softwareFacade.count();
idAutomatico = idAutomatico + 1;
Software s = new Software();
s.setIdFabricante(idFabricante);
s.setNombreSoftware(nombre);
s.setIdSoftware(idAutomatico);
Software soft = softwareFacade.find(id);
soft.getCostoClienteSoftware();
softwareFacade.create(s);
nombre = null;
return "/ingresarProducto.xhtml?faces-redirect=true";
}
return "/ingresarProducto.xhtml?faces-redirect=false";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@NotNull(message = "Debe ingresar un nombre.")
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
@NotNull(message = "Debe ingresar un nùmero de serie.")
public Integer getNumeroSerie() {
return numeroSerie;
}
public void setNumeroSerie(Integer numeroSerie) {
this.numeroSerie = numeroSerie;
}
public String getTipoHardware() {
return tipoHardware;
}
public void setTipoHardware(String tipoHardware) {
this.tipoHardware = tipoHardware;
}
public String getTipoSoftware() {
return tipoSoftware;
}
public void setTipoSoftware(String tipoSoftware) {
this.tipoSoftware = tipoSoftware;
}
public int getIdFabricante() {
return idFabricante;
}
public void setIdFabricante(int idFabricante) {
this.idFabricante = idFabricante;
}
public int getTipoProducto() {
return tipoProducto;
}
public void setTipoProducto(int tipoProducto) {
this.tipoProducto = tipoProducto;
}
public Integer getCostoCliente() {
return costoCliente;
}
public void setCostoCliente(Integer costoCliente) {
this.costoCliente = costoCliente;
}
public Integer getCosto() {
return costo;
}
public void setCosto(Integer costo) {
this.costo = costo;
}
}
如您所见,我为“名词”和“número de serie”添加了@NotNull。
@NotNull(message = "Debe ingresar un nombre.")
public String getNombre() {
return nombre;
}
.
@NotNull(message = "Debe ingresar un nùmero de serie.")
public Integer getNumeroSerie() {
return numeroSerie;
}
这就是页面上验证消息的样子:
谢谢您的帮助!
解决方案
推荐阅读
- html - Flex Item is expanding beyond its parent Flex container
- swift - How to changhe the opacity of a button in Swift for an X amount of time
- para - 按照 Para 安装步骤并得到“连接失败。运行”para-cli setup“或检查配置文件”
- ios - 通过 CLI 函数向 iOS 发送推送通知
- java - 有没有办法比较字符串而不考虑一系列逗号中对象的顺序?
- android - 如何让功能更简单
- jmeter - Unable to access jar file for jmeter
- java - Memory leak while using mysql-java-drive and spring-jdbc
- c# - 为什么C#的十进制使用二进制整数有效位?
- c++ - Print integer from array A based on array B integer?