Pergunta

Quero colocar alguns arquivos JavaScript em um dos meus pacotes e fazer com que o Struts os sirva como /struts/js/foo.js

O Struts faz isso para arquivos no pacote 'template' (é onde os arquivos do plugin jQuery estão localizados, guardados por struts.ui.templateDir opção).No entanto, quero colocar esses arquivos em outro pacote;Se eu redefinir struts.ui.templateDir então o struts para de funcionar porque não consegue encontrar seus modelos.

Então a questão é:Como dizer ao Struts para servir arquivos em org.foo.some.package.js como /struts/js/whatever.js?

Foi útil?

Solução

Struts2 pode servir conteúdo estático pronto para uso.Por padrão, o conteúdo estático está sendo servido por DefaultStaticContentLoader uma implementação de StaticContentLoader.Ele pesquisa automaticamente os seguintes pacotes:

  • org.apache.struts2.static
  • modelo
  • estático
  • org.apache.struts2.interceptor.debugging

Você pode adicionar pacotes adicionais para serem pesquisados ​​no parâmetro init do filtro chamado "pacotes".

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
        <param-name>packages</param-name>
        <param-value>some.package another.one</param-value>
    </init-param>
</filter>

Você pode adicionar mais de um pacote, usar vírgula ou espaço ou tabulação ou nova linha como separador.

Aliás, você pode controlar se o conteúdo estático está sendo armazenado em cache por um navegador ou não com esta constante:

struts.serve.static.browserCache

Outras dicas

Uma maneira é estender todo o modelo e alterar o modelo como você já sugeriu. A menos que seja necessário implementar um modelo personalizado, isso é muito exagerado.

Mas a melhor maneira de esquecer o IMHO /struts/js/foo.js e use qualquer outro URL para carregar o JS.

Poucas amostras:

JSP

WebPages
    |-->myjs.js         (a normal js file)
    |-->mydynamicjs.jsp (a .jsp file containing ONLY javascript code)
    |-->WEB-INF-->xyz.js (another .js file but accessed only through action)

Suportes

<action name="myacctionjs">
    <result>/WEB-INF/xyz.js</result>
</action>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top