2012-12-01 87 views
0

faces-config.xml中彈簧EL不與@Transactional

- org.springframework.web.jsf.DelegatingVariableResolver 

的applicationContext.xml

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
<tx:annotation-driven /> 
<context:component-scan base-package="com.test"/> 

的index.xhtml工作

<h:outputText value="#{authBean.val}"/> 

AuthBean.java

package com.test.ui; 

@Component 
@Scope("session") 
public class AuthBean { 

    @Getter @Setter private String val; 

    @Transactional public void test(){} //works fine if @Transactional is removed 

工作正常,但是當一個方法是使用@註釋事務,下面的錯誤發生

16:23:13,906 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/jbtst].[Faces Servlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Faces Servlet threw exception: javax.el.PropertyNotFoundException: /index.xhtml @14,49 value="#{authBean.val}": The class '$Proxy28' does not have the property 'val'. 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIOutput.getValue(UIOutput.java:169) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 

使用Spring-3.1,Hibernate3中

回答

1

當您使用@Transactional春創建了一個實現相同的接口作爲代理你的班級,但你的AuthBean類沒有實現一個接口。

解決這個問題的最簡單方法是定義一個val屬性的接口,並且AuthBean實現該接口,然後該代理將具有val屬性。

+0

感謝,得到了一些關鍵字,從你的回答,再次搜索,並得到解決 – yodhevauhe

+0

嗨,我也面臨着類似你這樣的問題。你可以發佈解決方案是什麼?... – sandeepsharat