使用&&在Spring MVC @PreAuthorize中

时间:2013-08-14 07:00:51

标签: spring-mvc spring-el

我需要使用&&运算符在Spring @PreAuthorize注释中如下:

@PreAuthorize("hasAuthority('AUTH_ADMIN') && isEnabled(principal.department, #docCat)")
@RequestMapping(value = "/samedept/patient/{pin}/results/{docCat}/{docResultType}/{docId}", method = RequestMethod.GET,
        headers = ContentTypeHeader.HEADER_APPLICATION_PDF)
ModelAndView secureViewResultPdf(@PathVariable(value = "pin") long pin,
                           @PathVariable(value = "docCat") String docCat,
                           @PathVariable(value = "docResultType") String docResultType,
                           @PathVariable(value = "docId") String docId);

我试过了,但我得到了

java.lang.IllegalStateException: Cannot handle (38) '&'
    at org.springframework.expression.spel.standard.Tokenizer.process(Tokenizer.java:193)

我看过整个网络,但找不到一个&&的例子。运营商采用这种方式。有可能吗?

2 个答案:

答案 0 :(得分:4)

如果&&的含义为and

,请将&&修改为and

答案 1 :(得分:2)

如果你看一下spel文档 http://docs.spring.io/spring/docs/3.0.x/reference/expressions.html 你会看到Larry.Z是对的。

看看

  

6.5.6.2逻辑运算符       // - 和 -

// evaluates to false
boolean falseValue = parser.parseExpression("true and false").getValue(Boolean.class);