我使用Spring和Thymeleaf。有一个用于侧边栏菜单的百万美元片段,包含在某些页面中。
我的问题:
有没有办法注册,如果主题中包含的段然后从数据库加载相关数据并将其添加到模型? (我在php Laravel 5中使用了类似的东西)
答案 0 :(得分:0)
从数据库获取数据并将其添加到控制器方法的模型中。然后在前端,只检查该值是否为null。如果该值不为null,则显示此片段。例如:您在控制器中设置一个值,如下所示:
model.addAttribute("errors",this.DAOLayer.getItemsToShowOnAParticularFragment());
然后在前端:
<c:if test="${errors != null}">
<div class="alert>
<table class="table">
<c:forEach items="${errors}" var="error">
<tr><td><c:out value="${error.defaultMessage}" /></td></tr>
</c:forEach>
</table>
</div>
</c:if>
我在我的JSP上这样做。如果错误为空,则整个<div>
不会显示。 <div>
仅在错误不为空时显示。
您可以设置另一个if语句,如果错误为null,请改为显示。
<c:if test="${errors == null}">
<!-- Since nothing came from DB, show this info in this fragment -->
进一步说明:
假设您已预留了一部分前端,可以显示来自数据库的这些消息。我将使用bootstrap作为示例。假设带圆圈的<div>
是您为其分配的区域。
产生这种布局的前端代码就是这个(它包含了导入Bootstrap库的所有import语句):
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="jumbotron text-center">
<h1>My First Bootstrap Page</h1>
<p>Resize this responsive page to see the effect!</p>
</div>
<div class="container">
<div class="row">
<div class="col-sm-4">
<h3>Column 1</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<div class="col-sm-4">
<h3>Column 2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<!-- Start of circled div -->
<div class="col-sm-4">
<h3>Column 3</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<!-- End of circled columns -->
</div>
</div>
</body>
</html>
现在里面这个最后<div class="col-sm-4"> ....
,您将放置<c:if test="${errors != null}">
JSTL代码来测试要向用户显示的内容。我希望您知道如何在前端使用和导入JSTL标记。如果没有,那么你可以google它,你会找到很多答案。
就是这样。