Весенняя загрузка / Перенаправление пользователя на данный веб-сайт

#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>
 

Похоже:

пример скриншота ссылки


Ссылки: