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

时间:2014-06-09 13:23:40

标签: spring spring-mvc spring-security spring-el

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

@PreAuthorize("hasPermission(#user, 'cadastra')")

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

<<action_name>>_<<class_name>>

我应该用什么表达来实现这一点,考虑到班级名称由this.getClass().getName()持有?

2 个答案:

答案 0 :(得分:10)

要在Spring EL中连接两个字符串,请使用concat函数。有关详细信息,请参见此处 Spring EL docs

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

    @PreAuthorize("hasRole('ROLE_'.concat(this.class.simpleName))")

答案 1 :(得分:2)

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

public String getName() {
    String expressao = entityClass.getName();
    String nome_classe = new String();
    StringTokenizer st = new StringTokenizer(expressao, ".");
    while (st.hasMoreTokens()) {
        nome_classe = st.nextToken();
    }
    System.out.println("getName nome_class = "+nome_classe);
    return nome_classe;
}

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

@PreAuthorize("hasPermission(#user, 'cadastra_'+#this.this.name)")