Функция addFlashAttribute атрибута перенаправления работает не так, как хотелось бы

#java #spring #spring-boot #spring-mvc

Вопрос:

в первых 4 операторах if , когда условие в нем истинно, атрибут addFlashAttribute добавляет ключ и строку в объект RedirectAttributes . но в моем случае это не так , из-за этого строка ниже

 String error = (String) inputFlashMap.get("passwordError");
 

дает java.lang.Исключение NullPointerException.

полный код:

         if(fName.length()==0){
            redirectAttributes.addFlashAttribute("fnameError","First name cant be empty");
            
        }if(lName.length()==0) {
            redirectAttributes.addFlashAttribute("lnameError","Last name cant be empty");
        }if(password.length()<=7) {
            
            redirectAttributes.addFlashAttribute("passwordError","Password cant be empty neither be less than 8 characters");
        }if(!matcher.matches()) {
            redirectAttributes.addFlashAttribute("emailError","The Email entered is not accepted");
        }
        
        Map<String, ?> inputFlashMap = RequestContextUtils.getInputFlashMap(request);
        
        System.out.println("Registration Form aint Right");
        
        //below lies the error
        String error = (String) inputFlashMap.get("passwordError");
        

        System.out.println(error);
            
        

 

я сам проверил, работали ли 4 условия if или нет .это определенно работает, но атрибут addFlashAttribute не добавляет ключ и строку, связанные с ключом, в объект RedirectAttributes.из-за чего возникает исключение нулевого указателя . почему это происходит и как мне это исправить ?

Комментарии:

1. Вероятно, ваша карта inputFlashMap равна нулю?

2. @Сергей Васнев о, я только что проверил, распечатав строку : RequestContextUtils.getInputFlashMap(запрос); кажется, эта строка возвращает значение null. есть идеи, почему это может быть ? синтаксис кажется правильным.

Ответ №1:

Используйте : Атрибуты перенаправления.getFlashAttributes() вместо

 RequestContextUtils.getInputFlashMap(request);