Ограничение валидации просто работает только в поле.API проверки бинов - PullRequest
0 голосов
/ 04 июня 2018

У меня есть проблема, чтобы изменить сообщения проверки в форме, я провел некоторое исследование и выяснил об ограничениях проверки.

Во-первых, я хотел проверить, что данные не были нулевыми, поэтомуЯ использовал ограничение @NotNull, но оно работает не со всеми, только с одним в коде, и я не могу понять, почему.

Я использую JPA 2.1 EclipseLink

Вотbean:

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;
    }

}

Как видите, я добавил @NotNull для "nombre" и "número de serie".

@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;
}

А вот так выглядят сообщения проверки на странице:

Изображение результата в XHMTL

Спасибо за помощь!

...