<html> <body> <form> <th:block th:fragment="input (label, name, type)"> <div th:with="valid=${!#fields.hasErrors(name)}" th:class="${'form-group' + (valid ? '' : ' has-error')}" class="form-group"> <label class="col-sm-2 control-label" th:text="${label}">Label</label> <div class="col-sm-10"> <div th:switch="${type}"> <input th:case="'text'" class="form-control" type="text" th:field="*{__${name}__}" /> <input th:case="'date'" class="form-control" type="text" th:field="*{__${name}__}" placeholder="YYYY-MM-DD" title="Enter a date in this format: YYYY-MM-DD" pattern="(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))"/> </div> <span th:if="${valid}" class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span> <th:block th:if="${!valid}"> <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span> <span class="help-inline" th:errors="*{__${name}__}">Error</span> </th:block> </div> </div> </th:block> </form> </body> </html>