BAEL-3014: Added sample code for lists
This commit is contained in:
parent
ca53b93176
commit
306c37cfc4
|
@ -5,11 +5,17 @@
|
||||||
<name>spring-thymeleaf-2</name>
|
<name>spring-thymeleaf-2</name>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
|
|
||||||
|
<!-- <parent>-->
|
||||||
|
<!-- <groupId>com.baeldung</groupId>-->
|
||||||
|
<!-- <artifactId>parent-boot-2</artifactId>-->
|
||||||
|
<!-- <version>0.0.1-SNAPSHOT</version>-->
|
||||||
|
<!-- <relativePath>../parent-boot-2</relativePath>-->
|
||||||
|
<!-- </parent>-->
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>parent-boot-2</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>2.1.6.RELEASE</version>
|
||||||
<relativePath>../parent-boot-2</relativePath>
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
@ -21,6 +27,12 @@
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.baeldung.thymeleaf.lists;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("/lists")
|
||||||
|
public class ListsController {
|
||||||
|
|
||||||
|
@GetMapping("/toList")
|
||||||
|
public String usingToList(Model model) {
|
||||||
|
List<String> colors = getColors();
|
||||||
|
String[] colorsArray = colors.toArray(new String[0]);
|
||||||
|
model.addAttribute("myArray", colorsArray);
|
||||||
|
return "lists/toList";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/contains")
|
||||||
|
public String usingContains(Model model) {
|
||||||
|
model.addAttribute("myList", getColors());
|
||||||
|
model.addAttribute("others", getOtherColors());
|
||||||
|
return "lists/contains";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/size")
|
||||||
|
public String usingSize(Model model) {
|
||||||
|
model.addAttribute("myList", getColors());
|
||||||
|
return "lists/size";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/isEmpty")
|
||||||
|
public String usingIsEmpty(Model model) {
|
||||||
|
model.addAttribute("myList", getColors());
|
||||||
|
return "lists/isEmpty";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/sort")
|
||||||
|
public String usingSort(Model model) {
|
||||||
|
model.addAttribute("myList", getColors());
|
||||||
|
model.addAttribute("reverse", Comparator.reverseOrder());
|
||||||
|
return "lists/sort";
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getColors() {
|
||||||
|
List<String> colors = new ArrayList<>();
|
||||||
|
colors.add("green");
|
||||||
|
colors.add("yellow");
|
||||||
|
colors.add("red");
|
||||||
|
colors.add("blue");
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getOtherColors() {
|
||||||
|
List<String> colors = new ArrayList<>();
|
||||||
|
colors.add("green");
|
||||||
|
colors.add("blue");
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Lists Utility Class in Thymeleaf</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
myList contains red: <span th:text="${#lists.contains(myList, 'red')}"/>
|
||||||
|
|
||||||
|
myList contains red and green: <span th:text='${#lists.containsAll(myList, new String[]{"red", "green"})}'/>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Lists Utility Class in Thymeleaf</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
isEmpty Check : <span th:text="${#lists.isEmpty(myList)}"/>
|
||||||
|
|
||||||
|
<span th:unless="${#lists.isEmpty(myList)}">List is not empty</span>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Lists Utility Class in Thymeleaf</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
size: <span th:text="${#lists.size(myList)}"/>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Lists Utility Class in Thymeleaf</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
sort: <span th:text="${#lists.sort(myList)}"/>
|
||||||
|
|
||||||
|
sort with Comparator: <span th:text="${#lists.sort(myList, reverse)}"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Lists Utility Class in Thymeleaf</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<span th:with="convertedList=${#lists.toList(myArray)}">
|
||||||
|
converted list size: <span th:text="${#lists.size(convertedList)}"/>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,60 @@
|
||||||
|
package com.baeldung.thymeleaf.lists;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.containsString;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
@AutoConfigureMockMvc(printOnlyOnFailure = false)
|
||||||
|
public class ListsControllerIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalledToList_ThenConvertsToList() throws Exception {
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get("/lists/toList"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().string(containsString("converted list size: <span>4</span>")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalledContains_ThenChecksMembership() throws Exception {
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get("/lists/contains"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().string(containsString("myList contains red: <span>true</span>")))
|
||||||
|
.andExpect(content().string(containsString("myList contains red and green: <span>true</span>")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalledSize_ThenReturnsSize() throws Exception {
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get("/lists/size"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().string(containsString("size: <span>4</span>")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalledSort_ThenSortsItems() throws Exception {
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get("/lists/sort"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().string(containsString("sort: <span>[blue, green, red, yellow]</span>")))
|
||||||
|
.andExpect(content().string(containsString("sort with Comparator: <span>[yellow, red, green, blue]</span>")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCalledIsEmpty_ThenChecksAnyMembers() throws Exception {
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get("/lists/isEmpty"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().string(containsString("isEmpty Check : <span>false</span>")));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue