Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion spring-boot-mvc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

Expand All @@ -27,6 +27,11 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.baeldung.springbootmvc;

import javax.validation.Valid;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.baeldung.springbootmvc.model.LoginForm;

@RestController
@RequestMapping("/")
public class LoginController {

@PostMapping("loginform")
public String processLogin(@Valid LoginForm form) {
return "Success";

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@SpringBootApplication
public class SpringBootMvcApplication {

public static void main(String[] args) {
SpringApplication.run(SpringBootMvcApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(SpringBootMvcApplication.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.baeldung.springbootmvc.config;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

@Configuration
public class CustomMessageSourceConfiguration {

@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}

@Bean
public LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource());
return bean;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,13 @@ protected ResourceHttpRequestHandler faviconRequestHandler() {
requestHandler.setLocations(locations);
return requestHandler;
}
//@Controller

// @Controller
static class FaviconController {
@RequestMapping(value="favicon.ico", method=RequestMethod.GET)

@RequestMapping(value = "favicon.ico", method = RequestMethod.GET)
@ResponseBody
void favicon() {}
void favicon() {
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.baeldung.springbootmvc.model;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

public class LoginForm {

@NotEmpty(message = "{email.notempty}")
@Email
private String email;

@NotNull
private String password;

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}
1 change: 1 addition & 0 deletions spring-boot-mvc/src/main/resources/messages.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
email.notempty=Please provide valid email id.
1 change: 1 addition & 0 deletions spring-boot-mvc/src/main/resources/messages_fr.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
email.notempty=Veuillez fournir un identifiant de messagerie valide.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.baeldung.springbootmvc;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import com.baeldung.springbootmvc.config.CustomMessageSourceConfiguration;

@RunWith(SpringRunner.class)
@WebMvcTest(value = LoginController.class, secure = false)
@ContextConfiguration(classes = { SpringBootMvcApplication.class, CustomMessageSourceConfiguration.class })
public class LoginControllerUnitTest {

@Autowired
private MockMvc mockMvc;

@Test
public void givenLoginForm_whenEmailFieldNotProvided_testCustomValidMessageIsReturned() throws Exception {

RequestBuilder builder = MockMvcRequestBuilders.post("/loginform").param("email", "").param("password", "helo");

// header("accept-language", "fr").
MvcResult perform = mockMvc.perform(builder).andReturn();
Assert.assertTrue(perform.getResolvedException().getMessage().contains("valid email"));

}
}