如何在Spring Expression Language(SpEL)中连接两个字符串

Kle*_*ota 6 spring spring-mvc spring-security spring-el

在我的spring应用程序中,来自我的控制器和服务类的方法将此注释用于安全目的:

@PreAuthorize("hasPermission(#user, 'cadastra')")
Run Code Online (Sandbox Code Playgroud)

第二个参数,权限,应该具有以下格式:

<<action_name>>_<<class_name>>
Run Code Online (Sandbox Code Playgroud)

我应该用什么表达来实现这一点,考虑到类名是由this.getClass().getName()

Lou*_*ler 10

要在Spring EL中连接两个字符串,请使用concat函数.有关更多详细信息,请参见此处: Spring EL文档

例如,我使用了以下内容:

    @PreAuthorize("hasRole('ROLE_'.concat(this.class.simpleName))")
Run Code Online (Sandbox Code Playgroud)


Kle*_*ota 3

我终于解决了这个问题。我在控制器中添加了一个新方法:

public String getName() {
    String nome_classe = entityClass.getSimpleName();
    System.out.println("getName nome_class = "+nome_classe);
    return nome_classe;
}
Run Code Online (Sandbox Code Playgroud)

现在我以这种方式使用注释:

@PreAuthorize("hasPermission(#user, 'cadastra_'+#this.this.name)")
Run Code Online (Sandbox Code Playgroud)