我有一个枚举,Constants:
enum Constants {
ONE,TWO,THREE;
}
Run Code Online (Sandbox Code Playgroud)
如何比较Thymeleaf中的枚举常量.
谢谢.
我在使用Spring Security && Thymeleaf时遇到问题,特别是在尝试使用hasRole表达式时.'admin'用户有一个'ADMIN'角色,但hasRole('ADMIN')无论如何我会尝试将其解析为false
我的HTML:
1.<div sec:authentication="name"></div> <!-- works fine -->
2.<div sec:authentication="principal.authorities"></div> <!-- works fine -->
3.<div sec:authorize="isAuthenticated()" >true</div> <!-- works fine -->
4.<span th:text="${#authorization.expression('isAuthenticated()')}"></span> <!-- works fine -->
5.<div th:text="${#vars.role_admin}"></div> <!--Works fine -->
6.<div sec:authorize="${hasRole('ADMIN')}" > IS ADMIN </div> <!-- Doesnt work -->
7.<div sec:authorize="${hasRole(#vars.role_admin)}" > IS ADMIN </div> <!-- Doesnt work -->
8.<div th:text="${#authorization.expression('hasRole(''ADMIN'')')} "></div> <!-- Doesnt work -->
9.<div th:text="${#authorization.expression('hasRole(#vars.role_admin)')}"></div> <!-- Doesnt work -->
Run Code Online (Sandbox Code Playgroud)
结果是:
1.admin
2.[ADMIN]
3.true
4.true
5.ADMIN
6."prints nothing …Run Code Online (Sandbox Code Playgroud) 我有一个简单的文本输入字段,我必须从一个对象设置默认值并将其最终值保存在其他对象中.以下代码无效.
<div th:object="${form}">
<input class="form-control"
type="text"
th:value="${client.name}" //this line is ignored
th:field="*{clientName}"/>
</div>
Run Code Online (Sandbox Code Playgroud)
form是DTO对象,client是来自数据库的Entity对象.
解决这种情况的正确方法是什么?
不工作我的意思是 - 假设初始值是client.name ="Foo"和form.clientName = null.我需要输入字段显示值为"Foo",并在表单提交form.clientName值后变为"Foo".但是输入字段没有显示任何内容,并且在提交form.clientName值仍然为null;
如果有人有兴趣,请使用以下结构解决此问题(在另一个问题中找到答案).
th:attr="value = ${client.name}"
Run Code Online (Sandbox Code Playgroud) 我创建了fragment.html文件.它包含以下片段:
<div th:fragment="my_fragment(content)">
<p th:text="${content}"></p>
</div>
Run Code Online (Sandbox Code Playgroud)
我将上面的片段放入我的视图文件中:
<div th:replace="fragments :: my_fragment('test')"></div>
Run Code Online (Sandbox Code Playgroud)
现在,我想将两个参数传递给my_fragment,但我必须确保向后兼容性.
我试着按如下方式解决问题:
<div th:fragment="my_fragment(content, defaultParameter='default value')">
<p th:text="${content}"></p>
</div>
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的解决方案产生了错误:
org.springframework.web.util.NestedServletException:请求处理失败; 嵌套异常是org.thymeleaf.exceptions.TemplateProcessingException:无法解析片段.签名"my_fragment(content,defaultParameter ='default value')"声明2个参数,但片段选择指定1个参数.片段选择不正确匹配.
任何的想法?
我坚持在HTML 5格式化货币.我有应用程序,我必须格式化货币.我有下面的代码片段
<td class="right"><span th:inline="text">$ [[${abc.value}]]</span></td>
Run Code Online (Sandbox Code Playgroud)
从DAO abc我在读取货币值时,应格式化.目前打印$ 1200000.0应打印$ 1,200,000.0 .0
我正在启动一个新的Spring Boot Web应用程序,我需要选择如何实现前端.
我对几个项目中使用的Thymeleaf模板框架感到很满意,但我正在评估Angular(v2)作为一种可能的选择.
我对客户端MVC框架很陌生,我想了解是否有一些指导方针来决定哪个选项最适合Web项目.
我已经阅读了很多关于此的帖子和教程,但它们似乎都描述了个人观点或仅仅是编码实验......
是否有一些应用程序要求客观地建议使用客户端方法而不是服务器端实现?
将这两种技术结合使用是否可行且有效?
我怎样才能按索引循环?
Foo.java
public Foo {
private List<String> tasks;
...
}
Run Code Online (Sandbox Code Playgroud)
的index.html
<p>Tasks:
<span th:each="${index: #numbers.sequence(0, ${foo.tasks.length})}">
<span th:text="${foo.tasks[index]}"></span>
</span>
</p>
Run Code Online (Sandbox Code Playgroud)
我得到了解析错误
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as each: "${index: #numbers.sequence(0, ${student.tasks.length})}"
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个小型的Angular2项目.在我的情况下,我必须将一些请求(例如"/ faq","/ aboutus")重新路由回我的旧后端服务器,以获得一些服务器端呈现的百万美元模板.因此我使用内置代理重新路由到我的后台服务器.遗憾的是,由于一些奇怪的原因,它只服务于没有任何脚本和样式或图像的html文件.(我使用angular-cli创建我的项目结构)
这就是为什么我想将这些静态文件添加到我的angular2文件夹,但我找不到正确的位置,使其可用于我的应用程序.有没有其他人知道如何正确地将这些文件放在项目结构中?
在此先感谢您的帮助
我有一个具有枚举属性的域对象,我想显示一个下拉列表,其中包含该对象表单中所有可能的枚举值.想象一下以下对象:
public class Ticket {
private Long id;
private String title;
private State state;
// Getters & setters
public static enum State {
OPEN, IN_WORK, FINISHED
}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有一个方法,为这个对象呈现一个表单:
@RequestMapping("/tickets/new")
public String showNewTicketForm(@ModelAttribute Ticket ticket) {
return "tickets/new";
}
Run Code Online (Sandbox Code Playgroud)
模板看起来像这样:
<form th:action="@{/tickets}" method="post" th:object="${ticket}">
<input type="text" th:field="*{title}" />
<select></select>
</form>
Run Code Online (Sandbox Code Playgroud)
以后它应该转换成这样的东西:
<form action="/tickets" method="post">
<input type="text" name="title" />
<select name="state">
<option>OPEN</option>
<option>IN_WORK</option>
<option>FINISHED</option>
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
如何创建选择标签?所选值也应自动映射到票证,以便我可以在控制器中执行以下操作:
@RequestMapping(value = "/tickets", method = RequestMethod.POST)
public String createTicket(@Valid Ticket ticket) {
service.createTicket(ticket);
return …Run Code Online (Sandbox Code Playgroud) 在我的Spring Boot应用程序中,我正在尝试配置自定义错误页面,例如对于404,我在应用程序配置中添加了以下Bean:
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
}
};
}
Run Code Online (Sandbox Code Playgroud)
另外,我创建了以下简单的Thymeleaf模板:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<title>404 Not Found</title>
<meta charset="utf-8" />
</head>
<body>
<h3>404 Not Found</h3>
<h1 th:text="${errorCode}">404</h1>
<p th:utext="${errorMessage}">Error java.lang.NullPointerException</p>
<a href="/" th:href="@{/}">Back to Home Page</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并将其添加到/resources/templates/文件夹中.就在404错误我只能看到白屏.
我做错了什么以及如何正确设置我的404页面?此外,是否可以使用模板而不仅仅是自定义错误页面的静态页面?
thymeleaf ×10
java ×8
spring ×7
spring-mvc ×4
angular ×2
spring-boot ×2
angular-cli ×1
each ×1
file ×1
html ×1
html5 ×1
java-ee ×1
static ×1