2013-11-20 73 views
1

當我在cap業務方法中添加註釋@Transactional時,jqGrid未加載數據。但少註釋工作正常,爲什麼?jqGrid未使用@Transactional加載

@Service 
@Scope("request") 
public class MarcacionServiceImp implements MarcacionService{ 

@Autowired 
MarcacionMapper mapper; 

@Transactional 
public List<Marcacion> lista() throws Exception { 
    List<Marcacion> lista = mapper.listado(); 
    return lista; 
} 

} 

<action name="cargarMarcacion" class="cargaMarcacionAction"> 
     <result type="json" /> 
</action> 


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="/WEB-INF/mybatis-config.xml" /> 
</bean> 

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
    p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://localhost/asistencia" 
    p:username="root" p:password="root" /> 

<bean id="transactionManager"  
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager" 
    p:dataSource-ref="dataSource" /> 

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
    <property name="basePackage" value="mapper" /> 
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 
</bean> 

<bean id="usuarioAction" class="action.UsuarioAction" > 
    <property name="service" ref="usuarioService" />  
</bean> 
<bean id="usuarioService" class="negocio.UsuarioServiceImp" /> 

<bean id="cargaMarcacionAction" class="action.CargaMarcacionAction"> 
    <property name="service" ref="marcacionService" /> 
</bean> 
<bean id="marcacionService" class="negocio.MarcacionServiceImp" /> 

未在我的頁面中獲取JSON數據。我正在使用Struts2-Spring和MyBatis-Spring。 我的意思是這個問題是@Transactional不返回我的JSON數據。

+0

我認爲它與jqgrid無關。編寫一個集成測試,看看你是否能夠使用lista方法獲取數據。 – webdev

+0

是的,我從方法列表中獲取數據。我想春天阻止服務器的JSON ... – YanOner

+0

如何從Spring返回JSON? – webdev

回答

2

當struts2返回"json"結果默認情況下,它被配置爲序列化動作實例本身。但我認爲這不需要jqGrid,它只需要相關的數據。您可以使用"json"結果的參數來縮小序列化所需的屬性。首先,你應該通過重命名一個返回序列化數據的方法來定義一個屬性獲取器。

@Transactional 
public List<Marcacion> getLista() throws Exception { 
    List<Marcacion> lista = mapper.listado(); 
    return lista; 
} 

二,"root"參數添加到結果

<result type="json"> 
    <param name="root">lista</param> 
</result> 

@Transactional是不相關的JSON數據序列化,但如果你從數據庫中檢索數據它需要。

+0

如果我想要序列化更多的對象,只有我用逗號分隔?例如: lista,someBean,map – YanOner

+1

不,你應該選擇包含這些屬性的根對象,然後使用'includeProperties'或'excludeProperties'指定應該包含哪些屬性或從序列化中排除處理。 –