Es ist ein Memorandum, die Nachricht zu ändern, wenn die Validierungsprüfung mit Anmerkungen im Frühjahrsstart durchgeführt wird
Spring Boot 1.5.4(Maven)
Controller, Formular, Ansicht erstellen
LoginController.java
@Controller
@RequestMapping({"/", "/login"})
public class LoginController extends BaseController {
@ModelAttribute
public LoginForm initForm(){
return new LoginForm();
}
@RequestMapping(value = {"/index", "/"}, method = RequestMethod.GET)
public String index(Model model){
return "test/index";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute @Validated TestForm form, BindingResult result, Model model)
{
if(result.hasErrors()){
return "test/index";
}
//Anmeldevorgang
......
return "redirect:/menu/index";
}
}
LoginForm.java
public class LoginForm extends BaseForm {
@NotEmpty
public String userId;
@NotEmpty
public String password;
/*Getter zur Verwendung mit Thymeleaf/brauche Setter*/
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
login/index.html
<!DOCTYPE html>
<html
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:th = "http://www.thymeleaf.org"
xmlns:layout = "http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layout"
>
<head>
<title>Einloggen</title>
</head>
<body>
<div layout:fragment="contents">
<form class="form-horizontal" method="POST" action="/login/login/" th:action="@{/login/login}" th:object="${loginForm}">
<div class="form-group">
<p th:if="${#fields.hasErrors('*{userId}')}" th:errors="*{userId}" class="col-sm-offset-2 text-danger"></p>
<label for="user-id" class="col-sm-2 control-label">Benutzeridentifikation</label>
<div class="col-sm-5">
<input type="text" class="form-control" id="user-id" th:field="*{userId}" placeholder="Benutzeridentifikation" />
</div>
</div>
<div class="form-group">
<p th:if="${#fields.hasErrors('*{password}')}" th:errors="*{password}" class="col-sm-offset-2 text-danger"></p>
<label for="password" class="col-sm-2 control-label">Passwort</label>
<div class="col-sm-5">
<input type="password" class="form-control" id="password" th:field="*{password}" placeholder="Passwort" />
</div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary col-sm-2 col-sm-offset-2" name="login" value="Einloggen" />
<input type="reset" class="btn btn-default col-sm-2 col-sm-offset-1" name="clear" value="klar" />
</div>
</form>
</div>
</body>
</html>
Erstellen Sie als Nächstes eine Klasse, die "WebMvcConfigurerAdapter" erbt Es scheint, dass die Nachricht UTF-8 standardmäßig nicht unterstützt Stellen Sie die Codierung auf UTF-8 ein
AppConfigurerAdapter.java
@Configuration
public class AppConfigurerAdapter extends WebMvcConfigurerAdapter {
@Bean(name="validator")
public LocalValidatorFactoryBean localValidatorFactoryBean() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(messageSource());
return localValidatorFactoryBean;
}
/**
*Validierungsnachricht UTF-Verwalten mit 8.
* @return
*/
@Bean(name = "messageSource")
public MessageSource messageSource()
{
ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource();
bean.setBasename("classpath:ValidationMessages");
bean.setDefaultEncoding("UTF-8");
return bean;
}
}
Erstellen Sie als Nächstes eine Eigenschaftendatei, die die Validierungsnachricht direkt unter dem Ordner "resource" beschreibt.
Der Dateiname sollte der in "AppConfigurerAdapter.java" angegebene Dateiname sein.
Der Schlüssel der Nachricht gibt den vollständigen Namen der Anmerkung an.
Der Feldname wird in {0}
der Nachricht eingegeben
Wenn Sie dem Feldnamen einen Alias geben möchten, legen Sie auch den Feldnamen fest
ValidationMessages.properties
#Botschaft
org.hibernate.validator.constraints.NotEmpty.message={0}Bitte eingeben.
#Feldname
userId=Benutzeridentifikation
password=Passwort
Dies ist das Ergebnis des Drückens der Anmeldetaste, ohne die Benutzer-ID und das Kennwort auf dem Anmeldebildschirm einzugeben.
Recommended Posts