У меня есть весеннее загрузочное приложение, в котором я реализовал аутентификацию на основе ролей.
После аутентификации конечного пользователя меню из базы данных должно загружаться в соответствии с ролью.
После успешной аутентификации я извлекаю роль со страницы тимелеафа, чтобы загрузить меню.
До этого все работает нормально, даже если я печатаю значение роли, например alert("#hide").text(), оно предупреждает имя роли.
Чтобы загрузить меню, я должен знать, какой пользователь вошел в систему, чтобы можно было загрузить правильное меню.
Вот почему я извлекаю значение и сравниваю его как «admin», «user» и т. д.
Но сравнение не происходит
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:th = "http://www.thymeleaf.org"
xmlns:sec = "http://www.thymeleaf.org">
<head>
<meta charset = "UTF-8"/>
<meta name = "viewport" content = "width=device-width, initial-scale=1.0"/>
<meta http-equiv = "X-UA-Compatible" content = "ie=edge"/>
<title>BSNL | CC</title>
<link rel = "stylesheet" type = "text/css" media = "screen, projection"
href = "/static/css/bootstrap.css"
th:href = "@{/css/bootstrap.css}" />
<link rel = "stylesheet" type = "text/css" media = "screen, projection"
href = "/static/css/bootstrap.css"
th:href = "@{/css/menu.css}" />
</head>
<body>
<div id = "includedContent"></div>
Logged in user: <b th:inline = "text" class = "user" id = "hide"> [[${#httpServletRequest.remoteUser}]] </b>
<input type = "hidden" class = "order-entry" id = "ID" placeholder = "" th:value = "${#httpServletRequest.remoteUser}" value = "${#httpServletRequest.remoteUser}"/>
<script th:src = "@{/js/jquery-3.4.1.js}"></script>
<script th:src = "@{/js/bootstrap.js}"></script>
<script th:src = "@{/js/custom.js}"></script>
<script th:src = "@{/js/home.js}"></script>
</body>
</html>
Примечание:${#httpServletRequest.remoteUser} код на основе spring, чтобы увидеть, кто вошел в систему, например, администратор, пользователь или суперадминистратор.
$(document).ready(function(){
$("#includedContent").load("http://localhost:8080/BSNLCC-BackendWIthSecurity/home/");
alert($("#hide").text()); //printing fine
if ($("#hide").text() == "null"){ //comparing not happening tried with ==== also
alert(true);
}
/*
if ($("#rle").text() == "admin"){
loadAdminMenu();
}else if ($("#ID").text() == "superadmin"){
loadSuperAdminMenu();
}
function loadAdminMenu(){
alert($("#rle").text());
$.ajax({
url: 'home/load/menu',
type: 'GET',
contentType : 'application/json; charset=utf-8',
async: false,
data: {
role: $("#rle").text()
},
cache: false,
datatype: 'json',
success: function(data) {
alert("success");
},
error: function(err){
console.info(err);
}
});
}*/
});

Одна глупая вещь, которую я забыл обрезать извлеченное значение .trim() делает волшебство.
Ваш текст на самом деле предназначен для того, чтобы сказать «null» в виде строки? Чтобы сравнить с нулем, вам не нужен "" вокруг нуля.