Hola, tengo una aplicación donde estoy usando struts2 (y Criteria para los métodos) y tengo una pagina jsp con un select. Quiero que cuando el usuario de la página seleccione una opción del select, seleccionar ese valor, y mediante una función javascript enviarlo a un método de un Action que me selecciona un listado de datos relacionados con ese valor. El problema es que en la página obtengo el error:
could not get a field value by reflection getter of es.aena.sgma.controlresiduos.data.entity.EmpresaTr ansporte.id
y en las trazas:
WARN (CommonsLogger.java :45 ) - No configuration fou
nd for the specified action: '#' in namespace: '/'. Form action defaulting to 'action' attribute's literal value.
En la pagina jsp el select y la función javascript (dentro de sus etiquetas <script type="text/javascript"></script>) son:
<select name="listaempresastransporte" onchange="recargarListaPorEmpresaTransporte()">
<option selected="selected">Ver todas</option>
<s:iterator value="listaempresastransporteVo">
<option value="<s:property value="%{nombre}"/>"><s:property value="%{nombre}"/></option>
</s:iterator>
</select>
function recargarListaPorEmpresaTransporte()
{
var indice = document.forms[1].listaempresastransporte.selectedIndex;
var nombreempresatransporteseleccionada = document.forms[1].listaempresastransporte.options[indice].value;
document.location.href='/sgma/listar-salidas-residuos!recargarListaPorEmpresaTransporte.action? nombreempresatransporteseleccionada='+nombreempres atransporteseleccionada;
}
y el método del action es:
@SkipValidation
public String recargarListaPorEmpresaTransporte() throws Exception
{
if (nombreempresatransporteseleccionada != null)
{
this.getSalidaResiduoService().obtenerSalidasResid uosPorEmpresaTransporteByCriteria(nombreempresatra nsporteseleccionada);
}
return TABLA;
}
y el método del SalidaResiduoServiceImpl, que contiene el método para obtener esos datos:
@SuppressWarnings("unchecked")
public Collection<SalidaResiduoVo> obtenerSalidasResiduosPorEmpresaTransporteByCriter ia(String nombreempresatransporte)
throws SpringServiceException{
try{
Session session = (Session) this.getEntityManager().getDelegate();
Criteria crit = session.createCriteria(SalidaResiduo.class);
Collection<SalidaResiduo> listasalidasresiduos =
crit.add(Restrictions.eq("empresatransporteresiduo ", nombreempresatransporte)).list();
Collection<SalidaResiduoVo> listasalidasresiduosVo = new ArrayList<SalidaResiduoVo>();
for (SalidaResiduo unaSalidaResiduo : listasalidasresiduos)
{
SalidaResiduoVo salidaresiduoVo = this.getSalidaResiduoDao().toValueObject(unaSalida Residuo);
TipoResiduoVo tiporesiduoVo = new TipoResiduoVo();
EmpresaTransporteVo empresatransporteVo = new EmpresaTransporteVo();
EmpresaGestionVo empresagestionVo = new EmpresaGestionVo();
tiporesiduoVo.setNombre(unaSalidaResiduo.getTipore siduosalida().getNombre());
empresatransporteVo.setId(unaSalidaResiduo.getEmpr esatransporteresiduo().getId());
empresatransporteVo.setNombre(unaSalidaResiduo.get Empresatransporteresiduo().getNombre());
empresagestionVo.setId(unaSalidaResiduo.getEmpresa gestionresiduo().getId());
empresagestionVo.setNombre(unaSalidaResiduo.getEmp resagestionresiduo().getNombre());
salidaresiduoVo.setEmpresagestionresiduoVo(empresa gestionVo);
salidaresiduoVo.setEmpresatransporteresiduoVo(empr esatransporteVo);
salidaresiduoVo.setTiporesiduosalidaVo(tiporesiduo Vo);
listasalidasresiduosVo.add(salidaresiduoVo);
}
return listasalidasresiduosVo;
}catch (DaoException e){
throw new SpringServiceException(e);
}
}
¿Podéis echarme un cable? Haciendo Debug con eclipse parece que se fastidia cuando llega a "Collection<SalidaResiduo> listasalidasresiduos =
crit.add(Restrictions.eq("empresatransporteresiduo ", nombreempresatransporte)).list();", hasta ahí todo parece correcto. Muchas gracias, un saludo