У меня есть загрузочный контроллер Spring, который я хочу принять в качестве необязательного параметра, щелкнув строку div, чтобы я мог загрузить свой JSP соответственно с JSTL. Моя проблема в том, что после того, как AJAX передает параметр контроллеру, он устанавливает атрибут в модели, однако я не могу получить доступ к атрибуту модели в своем JSP.
Мой контроллер:
@GetMapping("/MainMenu")
public String index(Model model, Principal principal, @RequestParam(required = false) String linkClicked){
if(linkClicked != null){
logger.info("link clicked");
model.addAttribute("linkClicked", linkClicked);
}
return "MainMenu";
}
АЯКС:
$(document).on("click", "#frameworkLink", function () {
var linkClicked = $(this).text();
$(".groups").detach();
$(".frameworks").show();
$.ajax({
type: "GET",
url: "/MainMenu",
data: {"linkClicked": linkClicked},
dataType: 'text',
});
});
JSP:
<c:if test="${linkClicked != null}">
<c:if test="${linkClicked == 'Frameworks'}">
<div class="frameworks">
<sec:authorize access="hasAuthority('Admin')">
<button class="createGroup" id="createFramework" type="button" onclick="createFramework()">Create Framework</button>
</sec:authorize>
<c:forEach items="${frameworkList}" var="framework">
<div class="framework">${framework}</div>
</c:forEach>
</div>
</c:if>
</c:if>
РЕДАКТИРОВАТЬ: добавление @ResponseBody
к моему методу контроллера, как было предложено в дублирующем сообщении, не имело значения. Кроме того, я попытался изменить возвращаемое значение контроллера на ModelAndView
, что также не имело значения.