Author: bphillips Date: Sun Jul 21 12:42:35 2013 New Revision: 1505372 URL: http://svn.apache.org/r1505372 Log: Initial commit of a Struts 2 portlet project - see README.txt for how to build and run
Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/README.txt struts/sandbox/trunk/Struts2HelloWorldPortlet/pom.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/DefaultAction.java struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/MessageService.java struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/applicationContext.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.dtd struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/struts.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/META-INF/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/META-INF/MANIFEST.MF struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/jetty-pluto-web-default.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/portlet.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/web.xml struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/index.html struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/portlet/ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/portlet/hello.jsp Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/README.txt URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/README.txt?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/README.txt (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/README.txt Sun Jul 21 12:42:35 2013 @@ -0,0 +1,50 @@ +This is an example of running a Struts 2 portlet using the pluto embedded maven plugin with Jetty servlet container. + +To run the application use mvn jetty:run + +After Jetty starts up go to http://localhost:8080/struts2helloworldportlet/pluto/index.jsp + +The key parts to get the application to run using the embedded pluto plugin are: + +1. include this dependency in your pom.xml + + <dependency> + <groupId>com.bekk.boss</groupId> + <artifactId>maven-jetty-pluto-embedded</artifactId> + <version>1.0.1</version> + </dependency> + +2. include these plugins in your plugins section in pom.xml + (note the value of org.apache.pluto.embedded.portletIds is the portlet id value from portlet.xml) + + <plugin> + <groupId>org.apache.pluto</groupId> + <artifactId>maven-pluto-plugin</artifactId> + <version>1.1.3</version> + <executions> + <execution> + <phase>generate-resources</phase> + <goals> + <goal>assemble</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.23</version> + <configuration> + <webXml>${project.build.directory}/pluto-resources/web.xml</webXml> + <webDefaultXml>src/main/webapp/WEB-INF/jetty-pluto-web-default.xml</webDefaultXml> + <systemProperties> + <systemProperty> + <name>org.apache.pluto.embedded.portletIds</name> + <value>struts2helloworldportlet</value> + </systemProperty> + </systemProperties> + </configuration> + </plugin> + +3. Include jetty-pluto-web-default.xml in WEB-INF + Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/pom.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/pom.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/pom.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/pom.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,174 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>manning</groupId> + <artifactId>struts2helloworldportlet</artifactId> + <packaging>war</packaging> + <version>0.0.1-SNAPSHOT</version> + <name>Struts 2 Hello World Portlet Example</name> + <url>http://maven.apache.org</url> + <properties> + <app.name>${project.artifactId}</app.name> + <dist.home>${project.build.directory}</dist.home> + <!-- change the below to the location of your tomcat --> + <tomcat.dir>/apps/tomcat</tomcat.dir> + </properties> + <repositories> + <repository> + <id>bekk.boss</id> + <name>bekk.boxx</name> + <url>http://mvnrepository.com/artifact/com.bekk.boss/</url> + </repository> + </repositories> + <dependencies> + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-core</artifactId> + <version>2.3.15.1</version> + </dependency> + + + <dependency> + <groupId>org.apache.portals</groupId> + <artifactId>portlet-api_2.0_spec</artifactId> + <version>1.0</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.portals.pluto</groupId> + <artifactId>pluto-taglib</artifactId> + <version>2.0.0</version> + <type>jar</type> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.14</version> + </dependency> + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jsp-api</artifactId> + <version>2.0</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-portlet-plugin</artifactId> + <version>2.3.15.1</version> + </dependency> + + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-spring-plugin</artifactId> + <version>2.3.15.1</version> + </dependency> + <dependency> + <groupId>com.bekk.boss</groupId> + <artifactId>maven-jetty-pluto-embedded</artifactId> + <version>1.0.1</version> + </dependency> + + + + </dependencies> + + + <build> + <finalName>struts2helloworldportlet</finalName> + <plugins> + <plugin> + <artifactId>maven-war-plugin</artifactId> + <configuration> + <webXml>${project.build.directory}/pluto-resources/web.xml</webXml> + </configuration> + <version>2.1.1</version> + </plugin> + + <plugin> + <groupId>org.apache.pluto</groupId> + <artifactId>maven-pluto-plugin</artifactId> + <version>1.1.3</version> + <executions> + <execution> + <phase>generate-resources</phase> + <goals> + <goal>assemble</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.23</version> + <configuration> + <webXml>${project.build.directory}/pluto-resources/web.xml</webXml> + <webDefaultXml>src/main/webapp/WEB-INF/jetty-pluto-web-default.xml</webDefaultXml> + <systemProperties> + <systemProperty> + <name>org.apache.pluto.embedded.portletIds</name> + <value>StrutsExample</value> + </systemProperty> + </systemProperties> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>2.0.2</version> + <configuration> + <source>1.6</source> + <target>1.6</target> + </configuration> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + org.apache.pluto + </groupId> + <artifactId> + maven-pluto-plugin + </artifactId> + <versionRange> + [1.1.3,) + </versionRange> + <goals> + <goal>assemble</goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> +</project> Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/DefaultAction.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/DefaultAction.java?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/DefaultAction.java (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/DefaultAction.java Sun Jul 21 12:42:35 2013 @@ -0,0 +1,60 @@ +package com.struts2.tutorial.action; + + + +import org.apache.log4j.Logger; + +import com.opensymphony.xwork2.ActionSupport; + + + + +public class DefaultAction extends ActionSupport { + + private static final Logger logger = Logger.getLogger( DefaultAction.class.getName() ) ; + + //injected by Spring + private MessageService messageService; + + private String message ; + + + private static final long serialVersionUID = 1L; + + + public String execute() throws Exception { + + logger.info("Execute method..."); + + message = messageService.getMessage() ; + + return SUCCESS; + + } + + + + + + + public MessageService getMessageService() { + return messageService; + } + + public void setMessageService(MessageService messageService) { + this.messageService = messageService; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + + messageService.setMessage(message); + + } + + + +} Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/MessageService.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/MessageService.java?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/MessageService.java (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/java/com/struts2/tutorial/action/MessageService.java Sun Jul 21 12:42:35 2013 @@ -0,0 +1,16 @@ +package com.struts2.tutorial.action; + +public class MessageService { + + private String message; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + +} Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/applicationContext.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/applicationContext.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/applicationContext.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/applicationContext.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xmlns:context="http://www.springframework.org/schema/context" + + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd + http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> + + + + <bean id="messageService" class="com.struts2.tutorial.action.MessageService"> + <property name="message" value="Default Hello" /> + </bean> + + + + + +</beans> + + Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.dtd URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.dtd?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.dtd (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.dtd Sun Jul 21 12:42:35 2013 @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- Authors: Chris Taylor, Ceki Gulcu. --> + +<!-- Version: 1.2 --> + +<!-- A configuration element consists of optional renderer +elements,appender elements, categories and an optional root +element. --> + +<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?, + (categoryFactory|loggerFactory)?)> + +<!-- The "threshold" attribute takes a level value below which --> +<!-- all logging statements are disabled. --> + +<!-- Setting the "debug" enable the printing of internal log4j logging --> +<!-- statements. --> + +<!-- By default, debug attribute is "null", meaning that we not do touch --> +<!-- internal log4j logging settings. The "null" value for the threshold --> +<!-- attribute can be misleading. The threshold field of a repository --> +<!-- cannot be set to null. The "null" value for the threshold attribute --> +<!-- simply means don't touch the threshold field, the threshold field --> +<!-- keeps its old value. --> + +<!ATTLIST log4j:configuration + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + threshold (all|trace|debug|info|warn|error|fatal|off|null) "null" + debug (true|false|null) "null" + reset (true|false) "false" +> + +<!-- renderer elements allow the user to customize the conversion of --> +<!-- message objects to String. --> + +<!ELEMENT renderer EMPTY> +<!ATTLIST renderer + renderedClass CDATA #REQUIRED + renderingClass CDATA #REQUIRED +> + +<!-- Appenders must have a name and a class. --> +<!-- Appenders may contain an error handler, a layout, optional parameters --> +<!-- and filters. They may also reference (or include) other appenders. --> +<!ELEMENT appender (errorHandler?, param*, + rollingPolicy?, triggeringPolicy?, connectionSource?, + layout?, filter*, appender-ref*)> +<!ATTLIST appender + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT layout (param*)> +<!ATTLIST layout + class CDATA #REQUIRED +> + +<!ELEMENT filter (param*)> +<!ATTLIST filter + class CDATA #REQUIRED +> + +<!-- ErrorHandlers can be of any class. They can admit any number of --> +<!-- parameters. --> + +<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)> +<!ATTLIST errorHandler + class CDATA #REQUIRED +> + +<!ELEMENT root-ref EMPTY> + +<!ELEMENT logger-ref EMPTY> +<!ATTLIST logger-ref + ref CDATA #REQUIRED +> + +<!ELEMENT param EMPTY> +<!ATTLIST param + name CDATA #REQUIRED + value CDATA #REQUIRED +> + + +<!-- The priority class is org.apache.log4j.Level by default --> +<!ELEMENT priority (param*)> +<!ATTLIST priority + class CDATA #IMPLIED + value CDATA #REQUIRED +> + +<!-- The level class is org.apache.log4j.Level by default --> +<!ELEMENT level (param*)> +<!ATTLIST level + class CDATA #IMPLIED + value CDATA #REQUIRED +> + + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named category. --> +<!ELEMENT category (param*,(priority|level)?,appender-ref*)> +<!ATTLIST category + class CDATA #IMPLIED + name CDATA #REQUIRED + additivity (true|false) "true" +> + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named logger. --> +<!ELEMENT logger (level?,appender-ref*)> +<!ATTLIST logger + name CDATA #REQUIRED + additivity (true|false) "true" +> + + +<!ELEMENT categoryFactory (param*)> +<!ATTLIST categoryFactory + class CDATA #REQUIRED> + +<!ELEMENT loggerFactory (param*)> +<!ATTLIST loggerFactory + class CDATA #REQUIRED> + +<!ELEMENT appender-ref EMPTY> +<!ATTLIST appender-ref + ref CDATA #REQUIRED +> + +<!-- plugins must have a name and class and can have optional parameters --> +<!ELEMENT plugin (param*, connectionSource?)> +<!ATTLIST plugin + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT connectionSource (dataSource?, param*)> +<!ATTLIST connectionSource + class CDATA #REQUIRED +> + +<!ELEMENT dataSource (param*)> +<!ATTLIST dataSource + class CDATA #REQUIRED +> + +<!ELEMENT triggeringPolicy ((param|filter)*)> +<!ATTLIST triggeringPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + +<!ELEMENT rollingPolicy (param*)> +<!ATTLIST rollingPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + + +<!-- If no priority element is specified, then the configurator MUST not --> +<!-- touch the priority of root. --> +<!-- The root category always exists and cannot be subclassed. --> +<!ELEMENT root (param*, (priority|level)?, appender-ref*)> + + +<!-- ==================================================================== --> +<!-- A logging event --> +<!-- ==================================================================== --> +<!ELEMENT log4j:eventSet (log4j:event*)> +<!ATTLIST log4j:eventSet + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + version (1.1|1.2) "1.2" + includesLocationInfo (true|false) "true" +> + + + +<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, + log4j:locationInfo?, log4j:properties?) > + +<!-- The timestamp format is application dependent. --> +<!ATTLIST log4j:event + logger CDATA #REQUIRED + level CDATA #REQUIRED + thread CDATA #REQUIRED + timestamp CDATA #REQUIRED + time CDATA #IMPLIED +> + +<!ELEMENT log4j:message (#PCDATA)> +<!ELEMENT log4j:NDC (#PCDATA)> + +<!ELEMENT log4j:throwable (#PCDATA)> + +<!ELEMENT log4j:locationInfo EMPTY> +<!ATTLIST log4j:locationInfo + class CDATA #REQUIRED + method CDATA #REQUIRED + file CDATA #REQUIRED + line CDATA #REQUIRED +> + +<!ELEMENT log4j:properties (log4j:data*)> + +<!ELEMENT log4j:data EMPTY> +<!ATTLIST log4j:data + name CDATA #REQUIRED + value CDATA #REQUIRED +> Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/log4j.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> + +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> + + <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> + </layout> + </appender> + + + <!-- specify the logging level for loggers from other libraries --> + <logger name="com.opensymphony"> + <level value="WARN" /> + </logger> + + <logger name="org.apache.struts2"> + <level value="WARN" /> + </logger> + + <!-- log only debug and above messages for loggers with + a name of the name value below --> + <logger name="com.struts2.tutorial"> + <level value="DEBUG" /> + </logger> + + + + <!-- for all other loggers log only warn and above log messages --> + <root> + <priority value="WARN"/> + <appender-ref ref="STDOUT" /> + </root> + +</log4j:configuration> + Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/struts.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/struts.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/struts.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/resources/struts.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> +<struts> + + <include file="struts-portlet-default.xml"/> + + <package name="view" extends="struts-portlet-default" + namespace="/view"> + <action name="index" class="com.struts2.tutorial.action.DefaultAction"> + <result name="success">/portlet/hello.jsp</result> + </action> + </package> + + +</struts> \ No newline at end of file Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/META-INF/MANIFEST.MF URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/META-INF/MANIFEST.MF?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/META-INF/MANIFEST.MF (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/META-INF/MANIFEST.MF Sun Jul 21 12:42:35 2013 @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/jetty-pluto-web-default.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/jetty-pluto-web-default.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/jetty-pluto-web-default.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/jetty-pluto-web-default.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,505 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> + +<!-- ===================================================================== --> +<!-- This file contains the default descriptor for web applications. --> +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +<!-- The intent of this descriptor is to include jetty specific or common --> +<!-- configuration for all webapps. If a context has a webdefault.xml --> +<!-- descriptor, it is applied before the contexts own web.xml file --> +<!-- --> +<!-- A context may be assigned a default descriptor by: --> +<!-- + Calling WebApplicationContext.setDefaultsDescriptor --> +<!-- + Passed an arg to addWebApplications --> +<!-- --> +<!-- This file is used both as the resource within the jetty.jar (which is --> +<!-- used as the default if no explicit defaults descriptor is set) and it --> +<!-- is copied to the etc directory of the Jetty distro and explicitly --> +<!-- by the jetty.xml file. --> +<!-- --> +<!-- ===================================================================== --> +<web-app + xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" + metadata-complete="true" + version="2.5"> + + <description> + Default web.xml file. + This file is applied to a Web application before it's own WEB_INF/web.xml file + </description> + + <!-- ==================================================================== --> + <!-- Context params to control Session Cookies --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- UNCOMMENT TO ACTIVATE + <context-param> + <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name> + <param-value>127.0.0.1</param-value> + </context-param> + + <context-param> + <param-name>org.mortbay.jetty.servlet.SessionPath</param-name> + <param-value>/</param-value> + </context-param> + + <context-param> + <param-name>org.mortbay.jetty.servlet.MaxAge</param-name> + <param-value>-1</param-value> + </context-param> + --> + + <context-param> + <param-name>org.mortbay.jetty.webapp.NoTLDJarPattern</param-name> + <param-value> + start.jar|ant-.*\.jar|dojo-.*\.jar|jetty-.*\.jar|jsp-api-.*\.jar|junit-.*\.jar|servlet-api-.*\.jar|dnsns\.jar|rt\.jar|jsse\.jar|tools\.jar|sunpkcs11\.jar|sunjce_provider\.jar|xerces.*\.jar + </param-value> + </context-param> + + <listener> + <listener-class> + com.bekk.boss.pluto.embedded.jetty.util.OverrideContextLoaderListener + </listener-class> + </listener> + <listener> + <listener-class> + com.bekk.boss.pluto.embedded.util.PortalStartupListener + </listener-class> + </listener> + <filter> + <filter-name>plutoResourceFilter</filter-name> + <filter-class>com.bekk.boss.pluto.embedded.util.PlutResourcesFilter</filter-class> + </filter> + <filter> + <filter-name>plutoPortalDriver</filter-name> + <filter-class>com.bekk.boss.pluto.embedded.util.PlutoPortalDriverFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>plutoResourceFilter</filter-name> + <url-pattern>*.css</url-pattern> + </filter-mapping> + <filter-mapping> + <filter-name>plutoResourceFilter</filter-name> + <url-pattern>*.gif</url-pattern> + </filter-mapping> + <filter-mapping> + <filter-name>plutoResourceFilter</filter-name> + <url-pattern>*.png</url-pattern> + </filter-mapping> + <filter-mapping> + <filter-name>plutoResourceFilter</filter-name> + <url-pattern>*.js</url-pattern> + </filter-mapping> + <filter-mapping> + <filter-name>plutoPortalDriver</filter-name> + <url-pattern>/pluto/index.jsp</url-pattern> + </filter-mapping> + <filter-mapping> + <filter-name>plutoPortalDriver</filter-name> + <url-pattern>/pluto/index.jsp/*</url-pattern> + </filter-mapping> + + <!-- ==================================================================== --> + <!-- The default servlet. --> + <!-- This servlet, normally mapped to /, provides the handling for static --> + <!-- content, OPTIONS and TRACE methods for the context. --> + <!-- The following initParameters are supported: --> + <!-- --> + <!-- acceptRanges If true, range requests and responses are --> + <!-- supported --> + <!-- --> + <!-- dirAllowed If true, directory listings are returned if no --> + <!-- welcome file is found. Else 403 Forbidden. --> + <!-- --> + <!-- redirectWelcome If true, redirect welcome file requests --> + <!-- else use request dispatcher forwards --> + <!-- --> + <!-- gzip If set to true, then static content will be served--> + <!-- as gzip content encoded if a matching resource is --> + <!-- found ending with ".gz" --> + <!-- --> + <!-- resoureBase Can be set to replace the context resource base --> + <!-- --> + <!-- relativeResourceBase --> + <!-- Set with a pathname relative to the base of the --> + <!-- servlet context root. Useful for only serving --> + <!-- static content from only specific subdirectories. --> + <!-- --> + <!-- useFileMappedBuffer --> + <!-- If set to true (the default), a memory mapped --> + <!-- file buffer will be used to serve static content --> + <!-- when using an NIO connector. Setting this value --> + <!-- to false means that a direct buffer will be used --> + <!-- instead. If you are having trouble with Windows --> + <!-- file locking, set this to false. --> + <!-- --> + <!-- cacheControl If set, all static content will have this value --> + <!-- set as the cache-control header. --> + <!-- --> + <!-- maxCacheSize Maximum size of the static resource cache --> + <!-- --> + <!-- maxCachedFileSize Maximum size of any single file in the cache --> + <!-- --> + <!-- maxCachedFiles Maximum number of files in the cache --> + <!-- --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <servlet> + <servlet-name>default</servlet-name> + <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> + <init-param> + <param-name>acceptRanges</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>dirAllowed</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>redirectWelcome</param-name> + <param-value>false</param-value> + </init-param> + <init-param> + <param-name>maxCacheSize</param-name> + <param-value>4000000</param-value> + </init-param> + <init-param> + <param-name>maxCachedFileSize</param-name> + <param-value>254000</param-value> + </init-param> + <init-param> + <param-name>maxCachedFiles</param-name> + <param-value>1000</param-value> + </init-param> + <init-param> + <param-name>gzip</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>useFileMappedBuffer</param-name> + <param-value>true</param-value> + </init-param> + <!-- + <init-param> + <param-name>cacheControl</param-name> + <param-value>max-age=3600,public</param-value> + </init-param> + --> + <load-on-startup>0</load-on-startup> + </servlet> + + <servlet-mapping> + <servlet-name>default</servlet-name> + <url-pattern>/</url-pattern> + </servlet-mapping> + + + <!-- ==================================================================== --> + <!-- JSP Servlet --> + <!-- This is the jasper JSP servlet from the jakarta project --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- The JSP page compiler and execution servlet, which is the mechanism --> + <!-- used by Glassfish to support JSP pages. Traditionally, this servlet --> + <!-- is mapped to URL patterh "*.jsp". This servlet supports the --> + <!-- following initialization parameters (default values are in square --> + <!-- brackets): --> + <!-- --> + <!-- checkInterval If development is false and reloading is true, --> + <!-- background compiles are enabled. checkInterval --> + <!-- is the time in seconds between checks to see --> + <!-- if a JSP page needs to be recompiled. [300] --> + <!-- --> + <!-- compiler Which compiler Ant should use to compile JSP --> + <!-- pages. See the Ant documenation for more --> + <!-- information. [javac] --> + <!-- --> + <!-- classdebuginfo Should the class file be compiled with --> + <!-- debugging information? [true] --> + <!-- --> + <!-- classpath What class path should I use while compiling --> + <!-- generated servlets? [Created dynamically --> + <!-- based on the current web application] --> + <!-- Set to ? to make the container explicitly set --> + <!-- this parameter. --> + <!-- --> + <!-- development Is Jasper used in development mode (will check --> + <!-- for JSP modification on every access)? [true] --> + <!-- --> + <!-- enablePooling Determines whether tag handler pooling is --> + <!-- enabled [true] --> + <!-- --> + <!-- fork Tell Ant to fork compiles of JSP pages so that --> + <!-- a separate JVM is used for JSP page compiles --> + <!-- from the one Tomcat is running in. [true] --> + <!-- --> + <!-- ieClassId The class-id value to be sent to Internet --> + <!-- Explorer when using <jsp:plugin> tags. --> + <!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] --> + <!-- --> + <!-- javaEncoding Java file encoding to use for generating java --> + <!-- source files. [UTF-8] --> + <!-- --> + <!-- keepgenerated Should we keep the generated Java source code --> + <!-- for each page instead of deleting it? [true] --> + <!-- --> + <!-- logVerbosityLevel The level of detailed messages to be produced --> + <!-- by this servlet. Increasing levels cause the --> + <!-- generation of more messages. Valid values are --> + <!-- FATAL, ERROR, WARNING, INFORMATION, and DEBUG. --> + <!-- [WARNING] --> + <!-- --> + <!-- mappedfile Should we generate static content with one --> + <!-- print statement per input line, to ease --> + <!-- debugging? [false] --> + <!-- --> + <!-- --> + <!-- reloading Should Jasper check for modified JSPs? [true] --> + <!-- --> + <!-- suppressSmap Should the generation of SMAP info for JSR45 --> + <!-- debugging be suppressed? [false] --> + <!-- --> + <!-- dumpSmap Should the SMAP info for JSR45 debugging be --> + <!-- dumped to a file? [false] --> + <!-- False if suppressSmap is true --> + <!-- --> + <!-- scratchdir What scratch directory should we use when --> + <!-- compiling JSP pages? [default work directory --> + <!-- for the current web application] --> + <!-- --> + <!-- tagpoolMaxSize The maximum tag handler pool size [5] --> + <!-- --> + <!-- xpoweredBy Determines whether X-Powered-By response --> + <!-- header is added by generated servlet [false] --> + <!-- --> + <!-- If you wish to use Jikes to compile JSP pages: --> + <!-- Set the init parameter "compiler" to "jikes". Define --> + <!-- the property "-Dbuild.compiler.emacs=true" when starting Jetty --> + <!-- to cause Jikes to emit error messages in a format compatible with --> + <!-- Jasper. --> + <!-- If you get an error reporting that jikes can't use UTF-8 encoding, --> + <!-- try setting the init parameter "javaEncoding" to "ISO-8859-1". --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <servlet id="jsp"> + <servlet-name>jsp</servlet-name> + <servlet-class>com.bekk.boss.pluto.embedded.util.PortletJspServlet</servlet-class> + <init-param> + <param-name>logVerbosityLevel</param-name> + <param-value>DEBUG</param-value> + </init-param> + <init-param> + <param-name>fork</param-name> + <param-value>false</param-value> + </init-param> + <init-param> + <param-name>xpoweredBy</param-name> + <param-value>false</param-value> + </init-param> + <!-- + <init-param> + <param-name>classpath</param-name> + <param-value>?</param-value> + </init-param> + --> + <load-on-startup>0</load-on-startup> + </servlet> + + <servlet-mapping> + <servlet-name>jsp</servlet-name> + <url-pattern>*.jsp</url-pattern> + <url-pattern>*.jspf</url-pattern> + <url-pattern>*.jspx</url-pattern> + <url-pattern>*.xsp</url-pattern> + <url-pattern>*.JSP</url-pattern> + <url-pattern>*.JSPF</url-pattern> + <url-pattern>*.JSPX</url-pattern> + <url-pattern>*.XSP</url-pattern> + </servlet-mapping> + + + <!-- ==================================================================== --> + <session-config> + <session-timeout>30</session-timeout> + </session-config> + + <!-- ==================================================================== --> + <!-- Default MIME mappings --> + <!-- The default MIME mappings are provided by the mime.properties --> + <!-- resource in the org.mortbay.jetty.jar file. Additional or modified --> + <!-- mappings may be specified here --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- UNCOMMENT TO ACTIVATE + <mime-mapping> + <extension>mysuffix</extension> + <mime-type>mymime/type</mime-type> + </mime-mapping> + --> + + <!-- ==================================================================== --> + <welcome-file-list> + <welcome-file>index.html</welcome-file> + <welcome-file>index.htm</welcome-file> + <welcome-file>index.jsp</welcome-file> + </welcome-file-list> + + <!-- ==================================================================== --> + <locale-encoding-mapping-list> + <locale-encoding-mapping> + <locale>ar</locale> + <encoding>ISO-8859-6</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>be</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>bg</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>ca</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>cs</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>da</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>de</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>el</locale> + <encoding>ISO-8859-7</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>en</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>es</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>et</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>fi</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>fr</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>hr</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>hu</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>is</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>it</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>iw</locale> + <encoding>ISO-8859-8</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>ja</locale> + <encoding>Shift_JIS</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>ko</locale> + <encoding>EUC-KR</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>lt</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>lv</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>mk</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>nl</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>no</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>pl</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>pt</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>ro</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>ru</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>sh</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>sk</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>sl</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>sq</locale> + <encoding>ISO-8859-2</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>sr</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>sv</locale> + <encoding>ISO-8859-1</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>tr</locale> + <encoding>ISO-8859-9</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>uk</locale> + <encoding>ISO-8859-5</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>zh</locale> + <encoding>GB2312</encoding> + </locale-encoding-mapping> + <locale-encoding-mapping> + <locale>zh_TW</locale> + <encoding>Big5</encoding> + </locale-encoding-mapping> + </locale-encoding-mapping-list> + +</web-app> + Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/portlet.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/portlet.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/portlet.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/portlet.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,39 @@ +<?xml version='1.0' encoding='UTF-8' ?> +<portlet-app xmlns='http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd' + xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' + xsi:schemaLocation='http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd' version='1.0'> +<portlet id="StrutsExample"> + <description xml:lang="EN">Simple hello world portlet using Struts 2</description> + <!-- matches fname value in uPortal channel definition --> + <portlet-name>StrutsExample</portlet-name> + <display-name xml:lang="EN">Struts Example</display-name> + + <portlet-class>org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher</portlet-class> + + <!-- The namespace for the actions configured for view mode --> + <init-param> + <name>viewNamespace</name> + <value>/view</value> + </init-param> + + <!-- The default action to invoke in view mode. --> + <init-param> + <name>defaultViewAction</name> + <value>index</value> + </init-param> + + <expiration-cache>0</expiration-cache> + + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>VIEW</portlet-mode> + </supports> + + <supported-locale>en</supported-locale> + + <portlet-info> + <title>Struts Example</title> + </portlet-info> + </portlet> + +</portlet-app> Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/web.xml?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/web.xml (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/WEB-INF/web.xml Sun Jul 21 12:42:35 2013 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> +<web-app id="StrutsExample"> + <display-name>Struts Portlet Example</display-name> + + + + <context-param> + <param-name>contextConfigLocation</param-name> + <param-value>classpath:applicationContext.xml</param-value> + </context-param> + + <listener> + <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> + </listener> + +</web-app> Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/index.html URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/index.html?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/index.html (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/index.html Sun Jul 21 12:42:35 2013 @@ -0,0 +1,11 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> +<html> +<head> +<title>Redirecting</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.action"> +</head> +<body> + +</body> +</html> \ No newline at end of file Added: struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/portlet/hello.jsp URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/portlet/hello.jsp?rev=1505372&view=auto ============================================================================== --- struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/portlet/hello.jsp (added) +++ struts/sandbox/trunk/Struts2HelloWorldPortlet/src/main/webapp/portlet/hello.jsp Sun Jul 21 12:42:35 2013 @@ -0,0 +1,15 @@ +<%@ taglib prefix="s" uri="/struts-tags" %> + +<h3><s:property value="message" /> </h3> + +<h4>Create Your Own Message</h4> + +<s:form action="index" method="post"> + +<s:textfield name="message" label="Enter your message" /> + +<s:submit /> + +</s:form> + +