1

我需要在 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)

我浏览了整个网络,但找不到以这种方式使用 && 运算符的示例。是否可以?

4

2 回答 2

4

修改&&and,如果 的意思&&and

于 2013-08-14T08:08:24.400 回答
2

如果您查看 http://docs.spring.io/spring/docs/3.0.x/reference/expressions.html中的 spel 文档, 您会发现 Larry.Z 是正确的。

看着

6.5.6.2 逻辑运算符 // -- AND --

// evaluates to false
boolean falseValue = parser.parseExpression("true and false").getValue(Boolean.class);
于 2013-10-11T03:19:06.953 回答