Java Spring + Thymleaf - InputField Error Message wird nicht angezeigt.

Sapor2211

Cadet 4th Year
Registriert
Dez. 2013
Beiträge
82
Hallo CB Forum,

Ich habe momentan das Phänomen das in meiner SpringBoot Applikation zwar die Validierung der Inputfiels funktioniert (Routing zurück zur Ursprungsseite bei Fehlerhafter eingabe) aber ich/der Benutzer keinerlei Message dazu erhalte.

Dies sollte eigentlich in meiner iaas.html über die folgende Zeile erfolgen:
HTML:
                                <tr>
                                    <td>User ID</td>
                                    <td><input type="text"  class="form-control" placeholder="UserID" th:field="*{userId}" />
                                    <label th:if="${#fields.hasErrors('userId')}" th:class="'error'" >Enter Id</label>
                                    </td>
                                </tr>

Wenn fields.hasErrors erfolgt sollte die Zeile "Enter Id" erfolgen. Dies tut es aber nicht. Ich werde/bleibe auf der iaas.html Seite und im Debugger sehe ich meine Fehlerausgabe:

Code:
2018-10-13 20:14:08.846  INFO 18000 --- [nio-8080-exec-2] d.v.cloudController.IaasController       : Validation errors while submitting form.

Die Validation errors while submitting form kommt aus meiner IaasController.java Class

Ich habe mehrere Formen der Error Messages von Thymleaf ausprobiert ohne Erfolg.

Jemand eine Idee ? Vielen Dank schonmal im Vorraus:daumen:

Auszug iaas.html
HTML:
<form action="#" th:action="@{/cloud/iaas}"
                            th:object="${user}" method="POST">
                            <table  class="table table-hover">
                                <tr>
                                <td>User ID</td>
                                    <td><input type="text"  class="form-control" placeholder="UserID" th:field="*{userId}" />
                                    <label th:if="${#fields.hasErrors('userId')}" th:class="'error'" >Enter Id</label>
                                    </td>
                                </tr>
                                <tr>
                                    <td>User Name</td>
                                    <td><input type="text" class="form-control" placeholder="Miriam Musterfrau" th:field="*{userName}" /> <label
                                        th:if="${#fields.hasErrors('userName')}" th:class="'error'">Enter
                                            User Name</label></td>
                                </tr>
                                <tr>
                                    <td>Gender</td>
                                    <td><input type="radio" class="radio-inline" th:field="*{gender}" value="Male" /><label> Male</label>
                                        <input type="radio" class="radio-inline" th:field="*{gender}" value="Female" /><label> Female</label>
                                        <label th:if="${#fields.hasErrors('gender')}"
                                        th:class="'error'">Select Gender</label></td>
                                </tr>
                                <tr>
                                    <td>Married?</td>
                                    <td><input type="checkbox" class="checkbox-inline" th:field="*{married}" /></td>
                                </tr>
                                <tr>
                                    <td>Profile</td>
                                    <td><select  class="form-control" th:field="*{profile}">
                                            <option th:each="profile : ${allProfiles}"
                                                th:value="${profile}" th:text="${profile}">Profile</option>
                                    </select></td>
                                </tr>
                                <tr>
                                    <td colspan="2"><input type="submit"  class="btn btn-default"th:value="Submit" />
                                        <input type="reset" class="btn btn-default" th:value="Reset" /></td>
                                </tr>
                            </table>
  </form>

IaasController.java
Java:
@Controller
@RequestMapping(value = "/cloud")
public class IaasController {

    private static final Logger logger = LoggerFactory.getLogger(IaasController.class);
    @Autowired
    private IaasService userService;

    @RequestMapping("/cloud/iaas")
    public String getIaas() {
        return "/cloud/iaas";
    }

    @GetMapping(value = "/iaas")
    public ModelAndView createUserView() {
        ModelAndView modelAndView = new ModelAndView("cloud/iaas");
        modelAndView.addObject("user", new IaasUser());
        modelAndView.addObject("allProfiles", getProfiles());
        modelAndView.addObject("page", "IaaS");
        return modelAndView;
    }

    @PostMapping("/iaas")
    public ModelAndView createUser(@Valid IaasUser user, BindingResult result) {
        ModelAndView modelAndView = new ModelAndView();
        if (result.hasErrors()) {
            logger.info("Validation errors while submitting form.");
            modelAndView.setViewName("cloud/iaas"); //iaas.html
            modelAndView.addObject("user", user);
            modelAndView.addObject("allProfiles", getProfiles());
            modelAndView.addObject("page", "IaaS");
            return modelAndView;
        }
        userService.addUser(user);
        modelAndView.addObject("allUsers", userService.getAllUsers());
        modelAndView.setViewName("cloud/iaasconfirm"); //iaasconfrim.html
        logger.info("Form submitted successfully.");
        return modelAndView;
    }

    private List<String> getProfiles() {
        List<String> list = new ArrayList<>();
        list.add("Associate");
        list.add("AVP");
        list.add("VP");
        list.add("Director");
        return list;
    }

}


IaasService.java
Java:
@Service
public class IaasService {
   
    private List<IaasUser> userList = new ArrayList<>();
    public List<IaasUser> getAllUsers(){
        return userList;
    }
    public void addUser(IaasUser user) {
        userList.add(user);
}

}

IaasUser.java
Java:
public class IaasUser {
   
    @NotNull
    @Size(min = 3, max = 10)
    private String userId;
    @NotNull
    @Size(min = 5, max = 20)
    private String userName;
    @NotNull
    private String gender;
    private Boolean married;
    private String profile;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Boolean getMarried() {
        return married;
    }

    public void setMarried(Boolean married) {
        this.married = married;
    }

    public String getProfile() {
        return profile;
    }

    public void setProfile(String profile) {
        this.profile = profile;
}

}
 

Anhänge

  • cb.png
    cb.png
    7,7 KB · Aufrufe: 534
Zuletzt bearbeitet: (imports rausgenommen)
Geil, bester Mann! Vielen Dank.
Hat funktioniert, manchmal wird man einfach Betriebsblind, gefühlt 100x den Code durchgegangen und sowas fällt dann nicht auf...

Danke
 
Zurück
Oben