我在使用Spring Security && Thymeleaf时遇到问题,特别是在尝试使用hasRole表达式时.'admin'用户有一个'ADMIN'角色,但hasRole('ADMIN')无论如何我会尝试将其解析为false
我的HTML:
1.<div sec:authentication="name"></div> <!-- works fine -->
2.<div sec:authentication="principal.authorities"></div> <!-- works fine -->
3.<div sec:authorize="isAuthenticated()" >true</div> <!-- works fine -->
4.<span th:text="${#authorization.expression('isAuthenticated()')}"></span> <!-- works fine -->
5.<div th:text="${#vars.role_admin}"></div> <!--Works fine -->
6.<div sec:authorize="${hasRole('ADMIN')}" > IS ADMIN </div> <!-- Doesnt work -->
7.<div sec:authorize="${hasRole(#vars.role_admin)}" > IS ADMIN </div> <!-- Doesnt work -->
8.<div th:text="${#authorization.expression('hasRole(''ADMIN'')')} "></div> <!-- Doesnt work -->
9.<div th:text="${#authorization.expression('hasRole(#vars.role_admin)')}"></div> <!-- Doesnt work -->
Run Code Online (Sandbox Code Playgroud)
结果是:
1.admin
2.[ADMIN]
3.true
4.true
5.ADMIN
6."prints nothing …Run Code Online (Sandbox Code Playgroud) 我正在Chrome控制台上测试方法的原型,并获得有关Array.prototype.reduce()的意外结果
例如,下面的示例
let a = [["a",1],["b",1],["c",1]];
let result = a.reduce((acc, e) => acc[e[0]]=e[1], {});
Run Code Online (Sandbox Code Playgroud)
我期望得到的结果是
{
"a": 1,
"b": 1,
"c": 1
}
Run Code Online (Sandbox Code Playgroud)
但我得到的值是1
我有一个java类
SomeClass implements Runnable
Run Code Online (Sandbox Code Playgroud)
其中有一个方法display().
当我创建这个类的线程时
Thread thread1 = new Thread(new SomeClass());
Run Code Online (Sandbox Code Playgroud)
现在我如何使用线程实例调用display()方法?
由于内部静态方法我们:
- 无法对非静态字段进行静态引用
但根据这里的答案:静态方法中的局部变量是否也是静态的?
- 静态方法中的局部变量只是静态方法中的局部变量.它们不是静止的,它们在任何方面都不是特别的.
我的演绎(2)与Ernests答案(3)中的陈述之间存在冲突,我无法解释.
有人可以解释我的演绎是否错误,为什么会这样?
如果我没有错,那么问题的正确答案是"静态方法中的局部变量是否也是静态的"?
编辑:我不会混淆局部变量或成员变量(字段)或静态是什么.
我只是在想:
如果 "static methods cannot make reference to non static field" AND "fields are variables"
THEN "variables in static methods are also static"
使得在静态方法的变量既本地&&静
谢谢.