小编Pet*_*der的帖子

获取Spring SpEL表达式的java注释属性值

我需要在多个控制器上实现授权表达式.为此,我决定创建一个便于其使用的个性化注释.问题是授权表达式需要一个参数(一个id),可以在每个控制器中以不同的方式获得.然后

我把注释:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@PreAuthorize("@authorizationService.hasAdminRole() || ( @authorizationService.hasParentRole() && @authorizationService.isYourSon(#son) )")
public @interface OnlyAccessForAdminOrParentOfTheSon {
    String son() default "";
}
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何获取要在SPEL授权表达式中使用的注释的"son"属性的值.

我使用的符号如下:

@OnlyAccessForAdminOrParentOfTheSon(son = "#id")
@OnlyAccessForAdminOrParentOfTheSon(son = "#socialMedia.son")
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题.提前致谢.

spring annotations spring-mvc spring-security spring-el

8
推荐指数
1
解决办法
719
查看次数

HSQLDB 忽略大小写

在java中有这段代码:

Connection c = jdbcDriver.getConnection("jdbc:hsqldb:mem:test;sql.ignore_case=true", null);
Statement stmt = c.createStatement();
stmt.executeUpdate("CREATE TABLE \"TEST\"(ID INT)");
stmt.executeQuery("SELECT id FROM \"test\";");
Run Code Online (Sandbox Code Playgroud)

抛出 org.hsqldb.HsqlException

Exception in thread "main" java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: test
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
at Test.main(Test.java:15)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: test
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.ParserDQL.readTableName(Unknown Source)
at org.hsqldb.ParserDQL.readTableOrSubquery(Unknown Source)
at org.hsqldb.ParserDQL.XreadTableReference(Unknown Source)
at org.hsqldb.ParserDQL.XreadFromClause(Unknown Source)
at org.hsqldb.ParserDQL.XreadTableExpression(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud)

java hsqldb

3
推荐指数
1
解决办法
2948
查看次数

公共构造函数,无法创建实例

有这个代码:

public final class A {
    public final class B {
    }
    public A(B b) {
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 如果没有实例,则无法创建A实例B.
  2. 如果没有实例,则无法创建B实例A.

在不改变代码和没有反射的情况下,如何创建实例A

java inner-classes instances

1
推荐指数
1
解决办法
83
查看次数