【发布时间】:2020-07-04 07:10:37
【问题描述】:
我不明白为什么 css 不起作用(我已经按照this thread 上所说的内容进行了操作) 我的资源有以下文件结构:
resources
- static
-style
style.css
- templates:
- CV.html
在模板中,我验证了正确生成的 URL,它是。 CSS 也正确提供:当我在浏览器中使用生成的 URL 时,提供 CSS 文件。
我的模板代码:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" lang="fr">
<head>
<title>CV ARSENE LAPOSTOLET</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link type="stylesheet" href="../static/css/style.css" th:href="@{|${baseUrl}/css/style.css|}"/>
</head>
<body>
<span th:text="|${baseUrl}/css/style.css|"></span>
<!--/*@thymesVar id="abilities" type="List<Ability>"*/-->
<div class="rouge" th:each="ability: ${abilities}">
<span th:text="${ability.getName()}"></span>
</div>
</body>
</html>
我的 Java 代码:
@RestController
@RequestMapping("/cv")
@AllArgsConstructor
public class CvController {
private CvService cvService;
private AbilityRepository abilityRepository;
private ServletContext servletContext;
@GetMapping("")
public ResponseEntity<Resource> getCv(HttpServletRequest servletRequest, HttpServletResponse servletResponse){
Locale locale = getLocale(servletRequest);
WebContext context = new WebContext(servletRequest, servletResponse, servletContext, locale);
context.setVariable("abilities", abilityRepository.findAll());
context.setVariable("baseUrl",getCurrentBaseUrl());
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/pdf"))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + "CV_ARSENE_LAPOSTOLET.pdf" + "\"")
.body(new ByteArrayResource(cvService.renderCv(context)));
}
private static String getCurrentBaseUrl() {
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest req = sra.getRequest();
return req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + req.getContextPath();
}
}
@Service
@AllArgsConstructor
@CommonsLog
public class CvService {
private TemplateEngine templateEngine;
public byte[] renderCv(WebContext ctx) {
String processedHtml = templateEngine.process("CV", ctx);
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(processedHtml);
renderer.layout();
renderer.createPDF(os);
return os.toByteArray();
} catch (DocumentException | IOException e) {
e.printStackTrace();
return null;
}
}
}
【问题讨论】:
标签: java css spring-boot itext thymeleaf