#spring-boot
#весенняя загрузка
Вопрос:
Я создаю приложение, в котором новый веб-сайт может быть добавлен в список, и теперь я хотел бы иметь возможность перенаправлять пользователя на этот данный веб-сайт. Как мне это сделать? Например, пользователь может добавить в список: www.example.com . Щелчок по ссылке (внутри Index.html ) приведет пользователя на примерную домашнюю страницу.
index.html это то место, где я хотел бы, чтобы ссылка отображалась для пользователя
<td><a th:href="@{'/website.link'}">Link</a></td>
new.html страница может добавлять ссылки
<div alight="left">
<tr>
<label class="form-label">Link</label>
<td><input type="text" th:field="*{link}" class="form-control"
placeholder="Link" /></td>
</tr>
</div>
Обратите внимание, что у меня пока ничего нет в контроллере.
Ответ №1:
Рассмотрим контрприложение, например:
@Controller
@SpringBootApplication
public class Application {
private final List<URI> allLinks = Collections.synchronizedList(new ArrayList<>());
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@ModelAttribute("allLinks")
public List<URI> allLinks() {
return allLinks;
}
@GetMapping("/")
public String index() {
return "index";
}
@PostMapping(value = "/", params = "send")
public void sendMeThere(@RequestParam String link, HttpServletResponse response) throws IOException {
// response send redirect! (relative/absolute/throws exception)
response.sendRedirect(link);
}
@PostMapping(value = "/")
public String addLink(@RequestParam String link) throws URISyntaxException {
links.add(new URI(link)); // throws exception!
return "redirect:/";
}
}
Мы можем попробовать это с помощью index.html вот так:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org" lang="en">
<head>
<title>Hello Links</title>
</head>
<body>
<h2>Add More Lnks</h2>
<form action="" th:action="@{/}" method="post">
<label>Link</label>
<input type="text" name="link"
placeholder="http://www.example.com" />
<input type="submit" value="Add Link" />
</form>
<hr/>
<h2>Naviagte via form submit</h2>
<form action="" th:action="@{/}" method="post">
<select name="link">
<option th:each="link : ${allLinks}" th:value="${link}" th:text="${link}" />
</select>
<input type="submit" value="Send me There" />
<input type="hidden" name="send" />
</form>
<hr/>
<h2>Naviagte via link</h2>
<ul>
<li th:each="link : ${allLinks}">
<!-- encapsulate ${link} in thymeleaf url @{...} (relative or absolute) -->
<a th:href="@{${link}}" th:text="${link}"/>
</li>
</ul>
</body>
</html>
Похоже:
Ссылки: