0

Tengo en un Controlador el siguiente metodo, el cual evalua el genero de un usuario cuando va a registrarse en mi sitio.

if (user.getGender() != "other" && user.getGender() != "male" && user.getGender() != "female") {
            model.addAttribute("invalid_gender", 1);
            model.addAttribute(Constants.TITLE, REGISTER_TITLE);
            return "register";
        }

En mi formulario tengo unicamente 3 opciones para el genero, las cuales son

  • Other
  • Male
  • Female

Si bien el texto tiene la primera letra de cada uno en mayúsculas, el value esta siempre en minúscula y así se guarda en la base de datos.

El problema es que aunque yo seleccione un genero del combobox, por alguna razon entra a mi condicional if. Si yo desde inspeccionar elemento modifico el value de los combobox, aun asi también me salta el error personalizado de genero invalido (esto es correcto, lo que no es correcto es que me salte cuando el genero es valido).

Sabiendo que con que una de las condiciones no se cumpla me debería de devolver false pero intrigado de porque esto no sucedia probe lo siguiente

System.out.println(true && false && false);
System.out.println(false && true && false);
System.out.println(false && false && true);

Y como era de esperar, todos devuelven false, pero aun así se ejecuta el código de mi if.

Cabe aclarar que he logrado lo que queria de la siguiente forma

if (!(user.getGender().equals("other") || user.getGender().equals("male") || user.getGender().equals("female"))) {
            model.addAttribute("invalid_gender", 1);
            model.addAttribute(Constants.TITLE, REGISTER_TITLE);
            return "register";
        }

Pero, ¿que es lo sucede en la primera forma que siempre se evalúa como true?

Saludos y gracias.

Lucas. D
  • 1,253
  • 4
  • 23
  • 41
  • 1
    La pregunta está bien planteada, pero es un duplicado de [¿Cómo comparar correctamente Strings (y objetos) en Java?](https://es.stackoverflow.com/questions/225/c%c3%b3mo-comparar-correctamente-strings-y-objetos-en-java) – Pablo Lozano May 30 '18 at 16:20
  • No la habia visto @PabloLozano . Crees que para evitar confusiones o cualquier problema lo mejor sea eliminarla? – Lucas. D May 30 '18 at 16:23
  • Puedes eliminarla, si quieres. Si no lo haces, se cerrará como duplicada (no resta reputación) – Pablo Lozano May 30 '18 at 16:25

0 Answers0