Hello World no Mentawai

8 respostas
ACDias
Não sei mais o que fazer, não estou conseguindo fazer nem um Hello World no Mentawai. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<servlet>
		<servlet-name>Controller</servlet-name>
		<servlet-class>org.mentawai.core.Controller</servlet-class>
		<init-param>
			<param-name>actionManager</param-name>
			<param-value>hello.HelloMentawai.ActionManager</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Controller</servlet-name>
		<url-pattern>*.mtw</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
</web-app>
HelloMentawai.java
package hello;

import org.mentawai.core.BaseAction;

public class HelloMentawai extends BaseAction{

	public String execute() throws Exception {
		String user = input.getStringValue("username");
		if((user==null) || (user.trim().equals("")))
			return ERROR;
		output.setValue("username", user.toUpperCase());
		return SUCCESS;
	}

}
ApplicationManager.java
import hello.*;

public class ApplicationManager extends org.mentawai.core.ApplicationManager {
	public void loadOptions() {
		action("/hello", HelloMentawai.class).
				fwdOk("/hello.jsp").
				fwdError("/error.jsp");
	}

}
Html
<form action="HelloMentawai.mtw" method="post">
			Please type your username:
			<input name="username" size="25" />
			<input type="submit" value="Enviar">
		</form>
Estrutura de diretórios:
+WEB-INF
   +classes
       -ApplicationManager.class
       +hello
          -HelloMentawai.class
   +lib
   -web.xml
Está gerando esse erro:
javax.servlet.ServletException: Could not find action for actionName: HelloMentawai
	org.mentawai.core.Controller.service(Controller.java:425)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Podem me ajudar?

8 Respostas

A

Ao invés de o seu form ser assim:

&lt;form action="HelloMentawai.mtw" method="post"&gt;

Escreva-o assim:

&lt;form action="hello.mtw" method="post"&gt;

Isso pq vc definiu o nome da action como “/hello”

import hello.*;
 
 public class ApplicationManager extends org.mentawai.core.ApplicationManager {
 	public void loadOptions() {
 		action("/hello", HelloMentawai.class).
 				fwdOk("/hello.jsp").
 				fwdError("/error.jsp");
 	}
 
 }
ACDias

Ainda estou tendo o mesmo erro…

Rubem_Azenha

O seu ApplicationManager:

action("/hello", HelloMentawai.class).
 				fwdOk("/hello.jsp").
 				fwdError("/error.jsp");

e seu jsp:

<form action="HelloMentawai.mtw" method="post">
 			Please type your username:
 			<input name="username" size="25" />
 			<input type="submit" value="Enviar">
 		</form>

O atributo ‘action’ do tem que casar com o parâmetro que você passa no action() do ApplicationManager.

Verifique se você realmente colocou

<form action="hello.mtw" method="post">
ACDias

pois é…
Eu mudei, fiz desse jeito, quando o andre.silva falou mas ainda tá dando esse erro.

saoj

O problema é que vc colocou o ApplicationManager no pacote hello, então vc vai ter que indicar isso no web.xml.

Por default ele pega o application manager do pacote root, ou seja, quando vc não coloca pacote nenhum nessa classe.

Toda vez que vc faz uma requisiçao, vc deve estar ganhando uma exception bem grande aí: “ApplicationManager is not loaded!”

Da onde vc tirou isso?

&lt;servlet&gt;
 		&lt;servlet-name&gt;Controller&lt;/servlet-name&gt;
 		&lt;servlet-class&gt;org.mentawai.core.Controller&lt;/servlet-class&gt;
 		&lt;init-param&gt;
 			&lt;param-name&gt;actionManager&lt;/param-name&gt;
 			&lt;param-value&gt;hello.HelloMentawai.ActionManager&lt;/param-value&gt;
 		&lt;/init-param&gt;
 		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
 	&lt;/servlet&gt;

Dá uma olhada em quick start pois não é assim que vc muda o local do seu applicationmanager: http://www.mentaframework.org/quick-start.jsp

ACDias

saoj:
O problema é que vc colocou o ApplicationManager no pacote hello, então vc vai ter que indicar isso no web.xml.

Por default ele pega o application manager do pacote root, ou seja, quando vc não coloca pacote nenhum nessa classe.

Toda vez que vc faz uma requisiçao, vc deve estar ganhando uma exception bem grande aí: “ApplicationManager is not loaded!”

Não. Estou tendo essa exception:

javax.servlet.ServletException: Could not find action for actionName: hello org.mentawai.core.Controller.service(Controller.java:425) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

saoj

Foi mal, não tinha visto.

O problema é que tu meteu um loadOptions().

Tu tá operando options ?

Sempre que dar um override num método, mete o @Override, para ter certeza que vc está dando override no método certo!

ACDias

Brincadeira q eu fiz uma p**** dessas. :oops:
Vlw pela ajuda galera. :lol:

Criado 26 de janeiro de 2007
Ultima resposta 27 de jan. de 2007
Respostas 8
Participantes 4