Получить фрагменты тимьяна с внешнего URL - PullRequest
1 голос
/ 29 апреля 2020

У меня есть сайт spring-boot / thymeleaf на сервере A, и я хочу загрузить некоторые фрагменты с сервера B. Фрагменты являются динамическими c, и некоторые из них вызывают java методы, определенные на сервере A, так что Мне нужно получить эти фрагменты (в виде простого текста?) С сервера B и включить их в мои html страницы на сервере A, где они будут обработаны и т.д. c. Сервер B будет действовать как хранилище, он вообще не будет обрабатывать, просто будет передавать фрагменты на сервер A.

Возможно ли это?

1 Ответ

0 голосов
/ 29 апреля 2020

Хорошо, я отправил этот вопрос, потому что все мои попытки не увенчались успехом, но в конце концов это была просто опечатка, которая сдерживала меня ... Так вот, что сработало для меня, на случай, если кому-то будет интересно:

  1. Я сохранил фрагменты в src / main / resources / static / фрагментов на сервере B. Предположим, файл с именем frg с фрагментом под названием «содержимое» внутри него.

  2. Я создал контроллер на сервере B для обслуживания файлов в виде простого текста, например:

    import org.springframework.core.io.ClassPathResource;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;

    import java.io.File;
    import java.nio.file.Files;

    import javax.servlet.http.HttpServletResponse;

    @Controller
    public class FragmentsController {

        @RequestMapping(value = "/fragments/{fragmentPage}")
        @ResponseBody
        public String GetFragment (@PathVariable String fragmentPage, HttpServletResponse response) throws Exception {
            response.setHeader("Content-Type", "text/plain");
            response.setHeader("success", "no");
            if (fragmentPage == null)
            {
                System.err.println("Nothing to serve!");
                return null;
            }

            System.out.println("Serving fragment: " + fragmentPage);
            String fileName = "static/fragments/"+fragmentPage;

            File resource = new ClassPathResource(fileName).getFile();
            String frg = "";
            try
            {
                frg= new String(Files.readAllBytes(resource.toPath()));
                response.setHeader("success", "yes");
            }
            catch (Exception e)
            {
                frg = "Error loading fragment: " + e.getMessage();
            }
            return frg;
        }
    }
С сервера А теперь я могу получить фрагмент следующим образом:
<div th:include="http://<server_b_url:port>/fragments/frg :: content"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...