当我在上限业务方法中添加注释@Transactional
时,jqGrid
不会加载数据。但是少注释工作正常,为什么?
@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 :(得分:2)
当struts2默认返回"json"
结果时,它被配置为序列化动作实例本身。但我认为jqGrid
不需要它,它只需要相关数据。您可以使用"json"
结果的参数来缩小序列化所需的属性。首先,您应该通过重命名返回序列化数据的方法来定义属性getter。
@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数据序列化无关,但是如果从数据库中检索数据则需要它。