Tag: annotations

Spring可以评估SpEL表达式中的所有字符/表达式,因为它们是从属性文件中注入的吗?

我想知道为什么spring不会直接评估所有表达式,因为它们是从属性文件注入到@PreAuthorize(…)注释中的。 我认为spring不会评估某些字符,如’(’,’)’,”’等,或者它会在属性文件中注入的值之上添加特殊字符。 为了澄清,让我们考虑以下示例。 @PreAuthorize(“hasRole(‘ROLE_ADMIN’)”) 上面的表达是正常的,并且工作正常。 假设属性文件的值如下。 role1=ROLE_ADMIN role2=’ROLE_ADMIN’ role3=hasRole(‘ROLE_ADMIN’) 让我们从属性文件中注入role1并将其传递给@PreAuthorize(“hasRole(${role1})”) ,它工作正常。 在评估hasRole(…)表达式的正常方式中,角色名称必须在单引号下,即’ROLE_ADMIN’ 。 但这里它适用于ROLE_ADMIN。 奇怪!。 如果我们将role2从属性文件注入@PreAuthorize(“hasRole(${role2})”) ,它将返回拒绝访问。 这意味着它被评估但我们可以意识到传递给表达式的值不是“ ‘ROLE_ADMIN’ ”。 因此,如果角色名称在单引号下,则拒绝访问。 另一个惊喜! 如果我们尝试将role3从属性文件注入@PreAuthorize(“${role3}”) ,那么它也不会被评估。 例外: java.lang.IllegalArgumentException: Failed to evaluate expression ‘role3’ : org.springframework.expression.spel.SpelEvaluationException: EL1001E:(pos 0): Type conversion problem, cannot convert from java.lang.String to java.lang.Boolean java.lang.IllegalArgumentException: Invalid boolean value ‘hasRole(‘ROLE_ADMIN’)’ 我的结论: 从上面的(1)和(2),我们可以实现一件事。 也就是说,在传递给@PreAuthorize(…)注释时,注入的值似乎放在单引号(”)下。 如果该陈述不成立,则(1)和(2)将不起作用。 这只是我的结论! 当我们来到(3)时,案例看起来类似于(1)和(2)。 […]

Jpa namedquery with left join fetch

这是我的命名查询: @NamedQuery(name =“User.findOneWithLists”,query =“SELECT u FROM User u”+“LEFT JOIN FETCH u.aTemplates”+“LEFT JOIN FETCH u.bTemplates”+“LEFT JOIN FETCH u.bp”+“LEFT JOIN FETCH u.aCredentials“+”LEFT JOIN FETCH u.st WHERE(st.deleted = false)“+”LEFT JOIN FETCH u.bCredentials“+”LEFT JOIN FETCH u.cl“+”WHERE u.id =:id “) 我的问题是,当应用程序启动时出现错误: org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:LEFT …. 在st侧有一个注释 @ManyToOne @JoinColumn(name = “st_user”) private User user; 任何想法我怎么能处理这个where子句?

JAXB – 在编组XML时可以将类包含展平吗?

说,我有两个class: @XmlRootElement class A { @XmlElement String propertyOfA; @XmlElement B b; } class B { @XmlElement String propertyOfB; } JAXB返回以相应方式格式化的XML: valueA valueB 我的问题是如何在XML中展平层次结构? 所以我有: valueA valueB 这可以用注释完成吗? 目前我正在考虑为A创建一种包装类,它将按照我希望在XML中查看它们的方式构建字段。 有没有更好的办法?

Hibernate Oracle表空间注释

我正在注释我的DAO并使用hibernate3:hbm2ddl来生成ddls。 有没有办法注释表空间?

JPA @Embedded注释是强制性的吗?

我已经尝试省略 @Embedded注释,但仍然将字段嵌入到表中。 我找不到任何可以说@Embedded注释是可选的。 是或不是可选的? 以下代码 @Embeddable public class Address { String city; String street; } @Entity public class Person { String name; @Embedded // it seems that it works even if this annotation is missing!? Address address; } 始终生成相同的表 person name city street 即使我没有指定@Embedded 。 我的配置: JBoss EAP 6.4.0 冬眠-JPA-2.0-API-1.0.1.Final-红帽-3.jar JPA规范说: http://docs.oracle.com/javaee/7/api/javax/persistence/Embedded.html @javax.persistence.Embedded 指定实体的持久字段或属性,该实体的值是可嵌入类的实例。 可嵌入类必须注释为Embeddable。 […]

从@Validvalidation中排除一些字段

我使用Spring的@Valid注释来validationbean的字段,这些字段用javax.constraints注释注释。 但是当我需要从validation中排除某些字段时我遇到了问题(仅限某些情况)。 我做了一个调查没有找到任何有用的方法,大多数答案的日期为2010-2011。 令人惊讶的是,这种情况非常普遍。 春季4. +的时间有变化吗? 或者也许任何人都可以分享个人经验如何击败这个? 谢谢。

Java Runtime注释如何在内部工作?

我知道编译时注释function,运行注释处理器和使用reflectionAPI。 但我不确定JVM如何获得有关运行时注释的通知。 注释处理器也可以在这里工作吗?

两个类具有相同的XML类型名称

我有这个错误,它说我有两个相同的XML类型名称的类 所以问题出在InfoSource – > NameSearchFilters – > SearchRequest之间 错误 Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions Two classes have the same XML type name “{http://test.au/schema/namesearch}InfoSource”. Use @XmlType.name and @XmlType.namespace to assign different names to them. this problem is related to the following location: at au.test.identitySearch.model.InfoSource at protected au.test.identitySearch.model.InfoSource au.test.identitySearch.model.nameSearch.NameSearchFilters.infoSourceList at au.test.identitySearch.model.nameSearch.NameSearchFilters this problem is related […]

自定义注释JSF

我想制作一个自定义注释来检查我的JSF Web应用程序的某些函数的安全性。 为了安全起见,我将Tomcat安全性与JaaS一起使用,因此我没有应用程序管理的安全性。 实际上想要做的是在Spring Security(@Secured(“role”))等Backing Beans中为我的方法做一个注释。 我的安全系统是实现的,所以每个function都是一个角色,你可以动态地将“用户角色”存储在数据库中,当有人登录所有(function)角色时,“用户角色”将在tomcat安全中设置作为角色。 所以现在我有这段代码来检查我的用户是否可以访问该function: public static void checkSecurity(final String function) { final FacesContext facesContext = FacesContext.getCurrentInstance(); try { if (facesContext.getExternalContext().getRemoteUser() == null) { facesContext.getExternalContext().redirect(“login.xhtml”); return; } if (!facesContext.getExternalContext().isUserInRole(function)) { facesContext.getExternalContext().redirect(“restricted.xhtml”); return; } } catch (final Exception ex /* Mandatory “IOException e” will be caught + all other exceptions. */) { facesContext.getExternalContext().setResponseStatus(403); […]

将动态参数传递给注释

我想知道是否有可能将动态值传递给注释属性。 我知道注释不是为了修改而设计的,但是我使用的是Hibernatefilter,并且在我的情况下,条件不是静态的。 我认为唯一的解决方案是使用librairies,其目的是读取和修改字节代码,如Javassist或ASM,但如果有另一个解决方案,它会好得多。 ps:在我的情况下的困难是我应该修改注释(属性的值),但我上面提到的librairies允许创建不编辑这就是为什么我想知道另一个解决方案 提前致谢