На мой взгляд, я импортирую компоненты jsp на основе логического значения, которое передается из контроллера Spring. Список объектов также передается из контроллера, и они должны заполнять поля в импортируемых компонентах.
Контроллер:
List<LeadUser> leadUsersList = null;
leadUsersList = businessApiClient.getUsersBySignUpType(type, id);
if (leadUsersList != null || leadUsersList.size() != 0) {
model.addAttribute("leadUsersList", leadUsersList);
model.addAttribute("displayTable", true);
if("webinars".equals(type)){
model.addAttribute("displayWebinarTable", true);
} else if("events".equals(type)){
model.addAttribute("displayEventTable", true);
} else if("info".equals(type)){
model.addAttribute("displayInfoTable", true);
} else if("booklets".equals(type)){
model.addAttribute("displayBookletTable", true);
}
Мнение:
<c:when test="${displayTable}">
<div class="tab-content">
<div class="tab-pane fade in active">
<div class="container-fluid">
<div class="row">
<div class="col-md-11 col-md-offset-1">
<div class="page-card">
<div class="page-card__body">
<c:choose>
<c:when test="${displayBookletTable}">
<jsp:include page="components/report-table-comopnents/booklet_signup.jsp" />
</c:when>
<c:when test="${displayEventTable}">
<jsp:include page="components/report-table-comopnents/event_signup.jsp" />
</c:when>
<c:when test="${displayInfoTable}">
<jsp:include page="components/report-table-comopnents/info_signup.jsp" />
</c:when>
<c:when test="${displayWebinarTable}">
<jsp:include page="components/report-table-comopnents/webinar_signup.jsp" />
</c:when>
</c:choose>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</c:when>
Компоненты таблицы импорта:
booklet_signup.jsp (остальные три также похожи на этот):
<div class="table-responsive">
<table id="bookletLeadsTable"
class="table table-bordered table-striped dataTable">
<thead>
<tr>
<th>Email</th>
<th>Business Name</th>
<th>Contact Name</th>
<th>Phone Number</th>
<th>Ref Page</th>
<th>Created Date & Time</th>
</tr>
</thead>
<tbody>
<c:forEach items="${leadUsersList}" var="item">
<tr>
<td>${item.email}</td>
<td>${item.businessName}</td>
<td>${item.contactName}</td>
<td>${item.phoneNo}</td>
<td>${item.refPage}</td>
<td>${item.createdTime}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#bookletLeadsTable').DataTable({
"paging": false,
"info": false
})
});
</script>
Теперь идентификатор проблемы тегами jstl в импортирующих компонентах (booklet_signup.jsp) не заполняется атрибутом модели leadUsersList
. Когда это не imporetd и остается в главном представлении, его заполняется хорошо. Что здесь могло пойти не так?