Я следую учебникам Spring Getting Started и ломаю голову над тем, как сделать что-то, что должно быть относительно простым, например, получить доступ к результату другого пути в том же контроллере.
Что я пытаюсь сделать:
- Вернуть заполненный шаблон Thymeleaf в виде HTML в браузер <- this
работает из коробки </li>
- Вернуть ту же страницу, что и PDF
GreetingController:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.thymeleaf.TemplateEngine;
@Controller
@RequestMapping(path = "/")
public class GreetingController {
@Autowired private TemplateEngine templateEngine;
@RequestMapping(value = "/index", method = RequestMethod.GET, produces = "application/html")
public String html(Model model) {
model.addAttribute("some_data", some_data.getIt());
return "some_template";
}
@RequestMapping(value = "/pdf", method = RequestMethod.GET, produces = "application/pdf")
public String pdf() {
// Option 1: get HTML output from html path
// Option 2: put the same data in some_template via the template engine and get the resulting HTML
// write HTML to a file using FileWriter
// then print the temporary file with HTML to PDF via wkhtml2pdf
return "generated_pdf";
}
}`
Может быть, я все делаю неправильно, и есть гораздо более простой способ получить заполненный HTML, пожалуйста, сообщите.
EDIT:
Зависимости Gradle для людей, пытающихся сделать что-то подобное:
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.boot:spring-boot-devtools")
testCompile("org.springframework.boot:spring-boot-starter-test")
}