Struts X Tiles

9 respostas
P

Pessoal, eu estou fazendo um projeto web dinâmico no eclipse utilizando hibernate, spring, struts 2.0 e tiles. Porém dá o seguinte erro:

File: org/apache/jasper/compiler/DefaultErrorHandler.java

Stacktraces
org.apache.tiles.impl.CannotRenderException: ServletException including path ‘pages/base.jsp’.

Adicionei os jars na minha lib.

Meu web xml:

<?xml version="1.0" encoding="UTF-8"?>
<display-name>projeto</display-name>

<filter>
	<filter-name>FilterDispatcher</filter-name>
	<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
	<filter-name>FilterDispatcher</filter-name>
	<url-pattern>*</url-pattern>
</filter-mapping>

<listener>
	<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<context-param>
    <param-name>org.apache.tiles.impl.BasicTilesContainer</param-name>
    <param-value>/WEB-INF/tiles.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>    
 <context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>WEB-INF/applicationContext.xml</param-value>  
</context-param>

<session-config>
	<session-timeout>15</session-timeout>
</session-config>

meu struts.xml (a minha action HomeAction tem apenas o método execute retornando success ):

<?xml version="1.0" encoding="UTF-8" ?>
<constant name="struts.devMode" value="true" />
<constant name="struts.objectFactory" value="spring" />    
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.custom.i18n.resources" value="resources"/>
<constant name="struts.i18n.encoding" value="LATIN1" />
<constant name="struts.multipart.maxSize" value="10485760" />

<package name="default" namespace="/" extends="struts-default">

	<result-types>
		<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
	</result-types>

	<default-interceptor-ref name="defaultStack" />
	
	<action name="home" class="pacote.HomeAction">			
		<result name="success" type="tiles">home.page</result>
	</action>
	
</package>

tiles.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<definition name="home.page" extends="base">      
   <put-attribute name="main" value="pages/home.jsp" />
</definition>

e por fim o meu jsp chamando o tiles:

Alguém pode me ajudar? O que eu fiz de errado? rs

9 Respostas

I

Não sei criar uma classe action.

WEB_INF / classe / br / com/ x / x / x / action e form

quando abro não consigo modificar o arquivo.class
mudo a extensão e quando abro aparece codigo maluco.

P

Ola inforjo!

A Action e uma classe comum, é só clicar com o botão direito no pacote - new - Class. Você coloca o nome da classe que quiser e depois no código já coloca pra extender a ActionSupport…

não sei se é essa a sua dúvida…rs

I

Um outro topico disseram que os arquivos.class na pasta WEB-INF/Class/br/com/empresa/x…/Action,
eram arquivos compilados e que não são implementados.
E VERDADE?
Sou leigo nesse negocio de struts, JavabEANS.

P

É isso mesmo, os arquivos .class são gerados quando você cria uma classe.

Pra alterar alguma coisa, altere sempre pela classe (.java)…

Você não consegue “editar” o .class diretamente. Tem programas que descompilam o .class (ou seja, cria um .java) para você alterar e depois compila novamente para .class. Agora não sei te dizer quais esses programas…

Mas como você está iniciando agora, não tem necessidade de tentar descompilar .class. Vai pelas classes .java mesmo…rs

I

PatySP Obrigado pela resposta.

Vc sabe me dizer como eu compilo um arquivo.java,
Pensei eu que quando colocava o programa pra rodar,
ele automaticamente compilava.

Criei uma gambiarra só; criei um arq.java implementei e depois,
mudei a extensão para arq.class.
Tô pesquisando muito sobre struts,
to metendo as cara mesmo no struts.

:slight_smile:

P

Você está usando alguma IDE? ou está no bloco de notas?

I

Estou usando o Eclipse.
Não sei compilar os arq.java para gerar arq.class.
Tô pesquisando ainda…

P

Faz assim:

Cria uma pasta de nome Teste (por exemplo) no diretório que você quiser.

Abra o eclipse informando o diretório onde está a sua pasta Teste.

Vai em File (Arquivo) e seleciona New (Novo) - Java Project (Projeto Java).

Coloca um nome qualquer para o seu projeto. ex: TesteProjeto.

Clica em finish.

Será gerado o seu projeto. Clica em cima dele com o botão esquerdo, clica em NEW - class.

Coloque um nome qualquer para a sua classe e clique em finish.

Pronto! O seu arquivo .java já está gerado e o .class também!

Para ver o seu arquivo .class gerado, você pode ir no diretório onde vc criou o seu projeto (fora do eclipse) e vá na pasta bin, lá estará todos os arquivos .class gerados.

Para rodar uma aplicação Java, vá em Run (no menu superior) - Run As - Java Application (tem tb os atalhos no eclipse mas nunca lembro…rs).

Espero ter ajudado.

I

PatySP muitíssimo obrigado!
Resolvido.

É o seguinte eu criei uma nova classe .java na pasta WEB-INF/Classe/br/com/empresa/algo/[ DAO | Model | control | mail | Action …]
Só que aparece na pasta source SRC (nos pacote) as classes .java
quando compiladas geram as .class na build mais só que ñ fica no projeto,
e sim no Windows Explore na workspace do projeto.

Resolvi um montão de erro. e consegui o que eu queria.

Criado 8 de dezembro de 2009
Ultima resposta 6 de jan. de 2010
Respostas 9
Participantes 2