2009-05-15 18 views
14

Con Struts2 tenemos que tener struts.xml en la ruta de la clase, por lo que ya no funciona para tenerlo en WEB-INF. Así que la forma que tengo mi proyecto para desplegar era para pegarlo bajo WEB-INF/classes y tienen que incluir ../struts2.xmlDónde poner struts.xml

2 Problemas:

  1. Eclipse realiza la limpieza de la carpeta de clases cuando hago una reconstrucción, por lo que elimina struts.xml
  2. Eclipse no muestra la carpeta de clases en mi navegador de proyectos, por lo que es un lugar pobre para pegar archivos de configuración en primer lugar.

¿Cómo están los desarrolladores de Struts2 Eclipse haciendo esto?

+0

C: \ Users \ 342008 \ Desktop \ Strus-structure.jpg – jcrshankar

Respuesta

13

Puede simplemente colocar struts.xml en la raíz de su directorio de origen o configurar un directorio de fuentes de recursos adicionales y colocarlo allí. Eclipse lo copia felizmente a WEB-INF/classes cuando hace una compilación.

+0

estoy recibiendo el error 404 mientras se hace de esa manera !!!! Estoy usando tomcat6. ¿Puedes decirme por qué sucede eso? – Visruth

0

No utilizo Eclipse, por lo que esta respuesta no es específica para sus requisitos, pero utilizo Maven para tener todos los "recursos" que necesita la aplicación en una carpeta separada llamada "recursos" y cuando la aplicación es construido estos archivos se copian en los lugares apropiados automáticamente. En Netbeans, los archivos en la carpeta están disponibles y sé que hay personas que usan eclipse con una configuración similar.

Debo señalar que nuestro proyecto comenzó en appfuse por lo que la mayoría de estas configuraciones estaban hechas previamente. Puedes ver cómo se hizo allí.

0

En struts 2 proyectos, el archivo struts.xml se agrega en la carpeta src (Java Resources) junto con los paquetes y las bibliotecas.

Consulte la imagen que se muestra a continuación.

Struts 2 project directory view in eclipse

Si quieres saber más sobre puntales 2 estructura del proyecto visite this link

Nota: En Eclipse, no se le permite pegar un archivo directamente en la carpeta src. Por lo tanto, primero debe pegarlo en cualquier otro lugar del proyecto (por ejemplo, en la carpeta 'WebContent') y luego usar la función mover para colocarlo en el lugar correcto (es decir, en la carpeta 'src').

+0

¿dónde está struts.xml aquí? – Visruth

+0

Lo intenté de esa manera. Pero obtengo el error 404. ¿Podemos tener una charla técnica? si es así, entra en http://visruthcv.appspot.com/ – Visruth

0

Puede colocar el archivo struts.xml en paquetes src (Java Resources). Cuando el proceso de compilación del archivo struts.xml se generará dentro del directorio ROOT/WEB-INF/classes.

si obtiene el mismo error una y otra vez, compruebe mejor las acciones de los puntales. compruebe la ruta implementada de la aplicación y puede encontrar lo que desea. (archivo struts.xml)

2

Llego tarde a la fiesta, podemos configurar struts.xml en cualquier directorio en el classpath de la aplicación web, pero proporcionamos la ubicación usando el parámetro init "config" del filtro configuración en web.xml como abajo, si mi archivo struts.xml está en el directorio "/ com/resources /".

<filter> 
     <filter-name>action</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
     <init-param> 
      <param-name>config</param-name> 
      <param-value>struts-default.xml,struts-plugin.xml,/com/resources/struts.xml</param-value> 
     </init-param> 
    </filter> 

Si no proporcionamos una struts2 parámetro de configuración de inicio por defecto toma 3 valores "struts-default.xml, puntales-plugin.xml, struts.xml", se puede ver el código de clase Dispatcher struts2 a continuación que configurará estos 3 archivos para el administrador de configuración.

String configPaths = (String)this.initParams.get("config"); 
if (configPaths == null) { 
    configPaths = "struts-default.xml,struts-plugin.xml,struts.xml"; 
} 
String[] files = configPaths.split("\\s*[,]\\s*"); 
for (String file : files) 
    if (file.endsWith(".xml")) { 
    if ("xwork.xml".equals(file)) 
     this.configurationManager.addContainerProvider(createXmlConfigurationProvider(file, false)); 
    else 
     this.configurationManager.addContainerProvider(createStrutsXmlConfigurationProvider(file, false, this.servletContext)); 
    } 
Cuestiones relacionadas