我知道如何在jstl上的标记内创建条件属性:
<body <c:if test="${userCreated}"> onload="somejavascriptfunction()"</c:if> >
但我如何使用百里香?
的IndexController
@RequestMapping("/register")
public String register(UserEntity user, @RequestParam String repeatedPassword, RedirectAttributes redirectAttributes) {
user.setAdmin(false);
userFacade.create(user);
redirectAttributes.addFlashAttribute(Constants.USER_CREATED, true);
logger.info("Usuario criado");
return "redirect:/login";
}
到目前为止,我找到的唯一解决办法是像这样做
<script type="text/javascript" th:if="${userCreated}">
$(document).ready(function() {
somejavascriptfunction()
});
</script>
但这似乎不是最好的方法。那么如何为百里香叶上的属性创建一个if语句呢?
答案 0 :(得分:27)
考虑到使用以下格式附加条件类,这确实是违反直觉的:
<div th:classappend="${userSlug != null}?has-slug">
为了附加条件属性,您将条件放在属性的值上,如下所示:
<div th:attrappend="data-path=${userSlug != null}?@{/myaccount/__${userSlug}__}">
如果userSlug为null,则前一个语句将评估为:
<div>
如果userSlug 不 null,则语句的计算结果为:
<div data-path="/myaccount/my-slug">
答案 1 :(得分:6)
您是否尝试使用 th:attr 处理器创建onload属性?我知道如果结果是 null ,有几个处理器不会呈现属性。我不确定这是否适用于attr处理器
<body th:attr="onload=${doOnload ? 'somejs()' : null}">
</body>
我这里没有可用的测试代码,但这可行。或者,您可以返回一个空的onload属性。
否则,我没有看到使用条件脚本标记的第二种方法存在问题。我经常在我的组件中这样做。
答案 2 :(得分:2)
yorgos答案应该是公认的答案。我对disabled
<div th:each="f, t : ${user1.folders}">
<input th:attrappend="disabled=${user2.folders[__${t.index}__].closed?'disabled'}" />
</div>
PS:我没有足够的声誉来写评论。
答案 3 :(得分:1)
正确的语法如下:
th:attr="attributeName=${condition}? 'conditionIsTrue' : 'conditionIsFalse'"