Estoy implementando en openxava el controlador de "Cargar y procesar un fichero desde el cliente" del cápitulo 7. Todo funciona correctamente hasta que el controlador "CargarImagen" devuelve el control al controlador de defecto "DEFAULT_CONTROLLERS" y entonces la URL muestra la siguiente dirección:
"http://localhost:8080/Proyecto/m/CargaImagen?application=Proyecto&module=CargaImagen"
en vez de
"http://localhost:8080/Proyecto/m/CargaImagen".
Mi pregunta es, ¿Como puedo modificar la URL para eliminar, para eliminar de ella "application=Proyecto&module=CargaImagen" ?
He estado debugeando no encuentro la línea donde se introduce "application=Proyecto&module=CargaImagen" dentro de la URL.
Gracias
Un Saludo
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
lo he probado y efectivamente sí que añade los parametros. Ahora mismo no sé en que parte se añaden ni por que, tendría que mirármelo con detenimiento.
¿Por qué los quieres quitar?
Ayuda a otros en este foro como yo te ayudo a ti.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
La razón es por estética de cara al usuario, por solicitud del cliente y porque muestra información de la aplicación.
Ahora me ha surgido otro error, abro el módulo donde subo el fichero para su procesamiento y cuando vuelvo abrir el módulo entra en un bucle infinito al intentar cargarlo de nuevo. El navegador se muestra cargando y las trazas de la consola TOMCAT muestra las mismas trazas de consulta de HIBERNATE. También entra en un bucle infinito cuando pulso el botón de cargar fichero y no le meto ningún fichero.
Esta vez he modificado los controladores:
<controlador nombre="prepararFichero">
<accion nombre="prepararFichero" clase="org.miEmpresa.Suscr.actions.PrepararFichero" al-iniciar="true">
<usa-objeto nombre="xava_view"/>
<usa-objeto nombre="xava_newImageProperty"/>
</accion>
</controlador>
El controlador "lecturaFichero"="CargarImagen" que es donde carga el fichero subido por el cliente, estoy creando 2 ficheros dentro del servidor.¿No sé si esto afectará eso en el bucle?. El código es exactamente lo mismo pero con el código para crear los 2 ficheros.
He estado debugueando y no sé lo que produce el bucle.
Last edit: Jose Luis 2014-09-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Y mucha gente usa Liferay sin quejarse de que la URL no es bonita.
Yo personalmente no lo voy a arreglar porque tengo una lista de bugs pendiente de arreglar que más importantes. Pero si piensas que merece la pena lo puedes arreglar tu mismo y contribuir el arreglo, lo incluiriamos en OpenXava. Lo que sospecho es que posiblemente esos parámetros estén ahí por algo, así que a lo mejor no te es tan fácil. Pero si tu usuario está dispuesta a pagar tu tiempo, allá él.
En cuanto al otro problema, he probado con lo de cargar imagen incluido en OpenXava y funciona bien, no he conseguido reproducir tu problema, será algo de tu código. Pon el código fuente de tus clases, para ver si veo algo y te puedo dar alguna pista.
Ayuda a otros en este foro como yo te ayudo a ti.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
public class CambiarImagen extends BaseAction implements ILoadFileAction{
public void execute() throws Exception{
}
public String[] getNextControllers(){
return new String[] {"CargarImagen" };
}
public String getCustomView(){
return "xava/editors/cambiarImagen.jsp";
}
public boolean isLoadFile(){
return true;
}
public String getNextMode() {
return IChangeModeAction.DETAIL;
}
}
archivo=>CargarImagen.java
public class CargarImagen extends BaseAction implements INavigationAction,IProcessLoadedFileAction{
privateListfileItems;privateViewview;privateStringnewImageProperty;privateFileficheroError=null;privateBufferedWriterbwError=null;privateStringrutaError=null;privateFileficheroOK=null;privateBufferedWriterbwOK=null;privateStringrutaOK=null;privateList<String>lista1;privateList<String>lista2;@InjectprivateStringficheroBajada;@InjectprivateStringmultipleBBDD;publicvoidexecute()throwsException{ficheroBajada="";Stringfichero="";rutaError=getRequest().getSession().getServletContext().getRealPath("cambiarImagen.jsp");rutaError=rutaError.replaceAll("cambiarImagen.jsp","moduloUsSuscr/InformeError.txt");ficheroError=newFile(rutaError);rutaOK=getRequest().getSession().getServletContext().getRealPath("cambiarImagen.jsp");rutaOK=rutaOK.replaceAll("cambiarImagen.jsp","moduloUsSuscr/InformeOK.txt");ficheroOK=newFile(rutaOK);if(ficheroError.exists()){ficheroError.delete();}if(ficheroOK.exists()){ficheroOK.delete();}bwError=newBufferedWriter(newFileWriter(ficheroError));bwError.write("---------------Informe de Errores---------------------");if(ficheroOK.exists()){ficheroOK.delete();}bwOK=newBufferedWriter(newFileWriter(ficheroOK));bwOK.write("---------------Informe de Bajas---------------------");Iteratori=getFileItems().iterator();while(i.hasNext()){FileItemfi=(FileItem)i.next();StringfileName=fi.getName();if(!Is.emptyString(fileName)){fichero=fileName;lista1=newArrayList<String>();lista2=newArrayList<String>();transformarListas(fi.get());}}try{if(lista1!=null){for(intj=0;j<msisdn.size();j++){tratamiento(lista1.get(j));}}}catch(Exceptionex){Log_outlog_out=newLog_out(this.getClass());Modulesmodulos=newModules();modulos.setCurrent("MiEmpresa","modulo");Stringcausa=null;if(ex.getCause()!=null){causa=ex.getCause().getMessage();}else{causa=ex.getMessage();}Stringmensaje="[USUARIO: "+Users.getCurrentUserInfo().getId()+"]"+"[MODULO: Modulo] -- Método: execute "+" ==> "+causa+"\n";log_out.logERROR(mensaje,modulos.getCurrentIdFolderModule());addError("no_execute_action");mensaje=null;causa=null;log_out=null;modulos=null;}finally{try{if(null!=ficheroError){bwError.close();}if(null!=ficheroOK){bwOK.close();}}catch(Exceptione2){}}}publicString[]getNextControllers(){returnnewString[]{"CargarImagen"};}publicStringgetCustomView(){return"xava/editors/cambiarImagen.jsp";}publicListgetFileItems(){returnfileItems;}publicvoidsetFileItems(ListfileItems){this.fileItems=fileItems;}publicViewgetView(){returnview;}publicvoidsetView(Viewview){this.view=view;}publicStringgetNewImageProperty(){returnnewImageProperty;}publicvoidsetNewImageProperty(StringnewImageProperty){this.newImageProperty=newImageProperty;}privatevoidtransformarListas(byte[]contenido){Stringelemento="";for(inti=0;i<contenido.length;i++){if(contenido[i]!=10&&contenido[i]!=13){elemento+=(char)contenido[i];}elseif(contenido[i]==10){if(elemento.contains(";")){lista2.add(elemento);}else{lista1.add(elemento);}elemento="";}}}privatevoidtratamiento(Stringlista1){//Códigoquetratalainformaciónrecogidaenelficherosubidoporelcliente}
}
COMO REPRODUCIR EL ERROR==>
Mi proyecto tiene integrado naviox, y el error surge cuando vuelvo a cargar el módulo de subida de ficheros después de ejecutarse el controlador "cambiarImagen" y entra en el bucle Infinito. Estos son los paso para provocar el bucle:
1º) Ejecutas el modulo "cambiarImagen".
2º) Pulsas el botón "cambiar" o "Cambiar Imagen".
3º) Vuelves a cargar el módulo Imagen, a través del menú de navegación de Naviox.
4º) Surge el bucle.
Muchas Gracias por contestar.
Un Saludo.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hola Javier,
Estoy implementando en openxava el controlador de "Cargar y procesar un fichero desde el cliente" del cápitulo 7. Todo funciona correctamente hasta que el controlador "CargarImagen" devuelve el control al controlador de defecto "DEFAULT_CONTROLLERS" y entonces la URL muestra la siguiente dirección:
"http://localhost:8080/Proyecto/m/CargaImagen?application=Proyecto&module=CargaImagen"
en vez de
"http://localhost:8080/Proyecto/m/CargaImagen".
Mi pregunta es, ¿Como puedo modificar la URL para eliminar, para eliminar de ella "application=Proyecto&module=CargaImagen" ?
He estado debugeando no encuentro la línea donde se introduce "application=Proyecto&module=CargaImagen" dentro de la URL.
Gracias
Un Saludo
Hola José Luis,
lo he probado y efectivamente sí que añade los parametros. Ahora mismo no sé en que parte se añaden ni por que, tendría que mirármelo con detenimiento.
¿Por qué los quieres quitar?
Ayuda a otros en este foro como yo te ayudo a ti.
Hola Javier,
La razón es por estética de cara al usuario, por solicitud del cliente y porque muestra información de la aplicación.
Ahora me ha surgido otro error, abro el módulo donde subo el fichero para su procesamiento y cuando vuelvo abrir el módulo entra en un bucle infinito al intentar cargarlo de nuevo. El navegador se muestra cargando y las trazas de la consola TOMCAT muestra las mismas trazas de consulta de HIBERNATE. También entra en un bucle infinito cuando pulso el botón de cargar fichero y no le meto ningún fichero.
Esta vez he modificado los controladores:
<controlador nombre="prepararFichero">
<accion nombre="prepararFichero" clase="org.miEmpresa.Suscr.actions.PrepararFichero" al-iniciar="true">
<usa-objeto nombre="xava_view"/>
<usa-objeto nombre="xava_newImageProperty"/>
</accion>
</controlador>
El controlador "lecturaFichero"="CargarImagen" que es donde carga el fichero subido por el cliente, estoy creando 2 ficheros dentro del servidor.¿No sé si esto afectará eso en el bucle?. El código es exactamente lo mismo pero con el código para crear los 2 ficheros.
He estado debugueando y no sé lo que produce el bucle.
Last edit: Jose Luis 2014-09-29
Hola José Luis,
¿Desde cuando la estética de la URL tiene importancia? Mira esta es una URL típica de Liferay:
/es/web/guest/demos?p_p_auth=Q1ADztKp&p_p_id=88&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&p_p_col_count=1&_88_struts_action=%2Flayout_management%2Fedit_pages&_88_tabs1=public-pages&_88_redirect=%2Fes%2Fweb%2Fguest%2Fdemos&_88_groupId=14&_88_selPlid=34633
Y mucha gente usa Liferay sin quejarse de que la URL no es bonita.
Yo personalmente no lo voy a arreglar porque tengo una lista de bugs pendiente de arreglar que más importantes. Pero si piensas que merece la pena lo puedes arreglar tu mismo y contribuir el arreglo, lo incluiriamos en OpenXava. Lo que sospecho es que posiblemente esos parámetros estén ahí por algo, así que a lo mejor no te es tan fácil. Pero si tu usuario está dispuesta a pagar tu tiempo, allá él.
En cuanto al otro problema, he probado con lo de cargar imagen incluido en OpenXava y funciona bien, no he conseguido reproducir tu problema, será algo de tu código. Pon el código fuente de tus clases, para ver si veo algo y te puedo dar alguna pista.
Ayuda a otros en este foro como yo te ayudo a ti.
Hola Javier,
Vale me voy a olvidar de modificar la URL. Me voy a centrar en el error del bucle infinito cuando subes un fichero. Este mi código fuente:
archivo=>aplicacion.xml
archivo=>controladores.xml
<controlador nombre="CargarImagen">
<accion nombre="cargarImagen" clase="org.miEmpresa.Suscr.actions.CargarImagen">
<usa-objeto nombre="xava_view"/>
<usa-objeto nombre="xava_newImageProperty"/>
</accion>
</controlador>
archivo=>CambiarImagen.java
public class CambiarImagen extends BaseAction implements ILoadFileAction{
}
archivo=>CargarImagen.java
public class CargarImagen extends BaseAction implements INavigationAction,IProcessLoadedFileAction{
}
COMO REPRODUCIR EL ERROR==>
Mi proyecto tiene integrado naviox, y el error surge cuando vuelvo a cargar el módulo de subida de ficheros después de ejecutarse el controlador "cambiarImagen" y entra en el bucle Infinito. Estos son los paso para provocar el bucle:
1º) Ejecutas el modulo "cambiarImagen".
2º) Pulsas el botón "cambiar" o "Cambiar Imagen".
3º) Vuelves a cargar el módulo Imagen, a través del menú de navegación de Naviox.
4º) Surge el bucle.
Muchas Gracias por contestar.
Un Saludo.
Hola José Luis,
en tu clase CargarImagen has de sustituir esto:
por esto otro:
Fíjate en el ejemplo que hay en la wiki.
Ayuda a otros en este foro como yo te ayudo a ti.