<!-- The Mentawai controller --> <web-app> <servlet> <servlet-name>Controller</servlet-name> <servlet-class>org.mentawai.core.Controller</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- You must choose an extension to indicate a mentawai action --> <servlet-mapping> <servlet-name>Controller</servlet-name> <url-pattern>*.mtw</url-pattern> </servlet-mapping> </web-app>
The lifecyle of a mentawai action is:
package examples.helloworld; import java.util.*; import org.mentawai.core.*; public class HelloMentawai extends BaseAction { public String execute() throws Exception { String username = input.getString("username"); if (username == null || username.trim().equals("")) { return ERROR; } output.setValue("username", username.toUpperCase()); return SUCCESS; } }
An action must have a name (or alias) and consequences for its results. Instead of using a boring XML file, Mentawai will let you do that with java code.
// no package (root package) import org.mentawai.core.*; public class ApplicationManager extends org.mentawai.core.ApplicationManager { public void loadActions() { // Ruby style: less verbose and less clear action("/HelloWorld", HelloMentawai.class) .on(SUCCESS, fwd("/hello.jsp")) .on(ERROR, fwd("/username.jsp")); // Java style: more verbose and more clear ActionConfig ac = new ActionConfig("/HelloWorld", HelloMentawai.class); ac.addConsequence(SUCCESS, new Forward("/hello.jsp")); ac.addConsequence(ERROR, new Forward("/username.jsp")); addActionConfig(ac); // add this action to the application manager } }
<web-app> <!-- The Mentawai controller --> <servlet> <servlet-name>Controller</servlet-name> <servlet-class>org.mentawai.core.Controller</servlet-class> <init-param> <param-name>applicationManager</param-name> <param-value>examples.helloworld.ApplicationManager</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- You must choose an extension to indicate a mentawai action --> <servlet-mapping> <servlet-name>Controller</servlet-name> <url-pattern>*.mtw</url-pattern> </servlet-mapping> </web-app>
Above we are specifying that our ApplicationManager class is examples.helloworld.ApplicationManager, overriding the default.Notice that it is a good idea to stick with the Mentawai default and keep your ApplicationManager class with an empty package, in other words, apart from the rest of your application.
The contents of the file username.jsp are below.It is just a HTML form to submit the username to our HelloMentawai action.
<html> <body> <h1>Hello Metawai!</h1> <mtw:form> Type your username: <mtw:input name="username" size="25" /> <mtw:submit value="Send" action="/HelloWorld.mtw" method="post" /> </mtw:form> </body> </html>
<%@ taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw" %> <html> <body> <h3>Hello <mtw:out value="username" /> from Mentawai!</h3><!-- Menta Tag --> <!-- or, if you prefer... --> <%-- <h3>Hello <c:out value="${username}" /> from Mentawai!</h3><!-- JSTL --> <h3>Hello ${username} from Mentawai!</h3><!-- EL --> <h3>Hello $username from Mentawai!</h3><!-- Velocity --> --%> </body> </html>