Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Incomplete
-
2.1.6
-
None
-
None
-
J2SE 1.6.0.14
TC 1.6.014
Struts 2.1.6
-
Important
Description
//WEB-INF/classes/struts.xml
<?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>
<!-- Some or all of these can be flipped to true for debugging -->
<constant name="struts.i18n.reload" value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.configuration.xml.reload" value="false" />
<constant name="struts.custom.i18n.resources" value="globalMessages" />
<constant name="struts.action.extension" value="action,," />
<constant name="struts.codebehind.defaultPackage" value="person" />
<!-- constant name="struts.freemarker.manager.classname" value="customFreemarkerManager" / -->
<constant name="struts.serve.static" value="true" />
<constant name="struts.serve.static.browserCache" value="false" />
<package name="sayHello" extends="struts-default" namespace="say-hello">
<default-action-ref name="say-hello"/>
<action name="say-hello" class="actions.all.SayHelloAction" method="default">
<result>/say-hello-success.jsp</result>
</action>
</package>
</struts>
//here is the java code which extended ActionSupport but reworked to extend Servlet to make operational
package actions.all;
import com.opensymphony.xwork2.ActionSupport;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SayHelloAction extends HttpServlet
{
private static final long serialVersionUID = 1L;
private java.lang.String userName;
public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
public String getServletInfo()
{ return "A servlet that knows the name of the person to whom it's" + "saying hello"; }public java.lang.String getUserName()
{ return userName; }public void setUserName(java.lang.String userName)
{ this.userName = userName; }}
//By default, the Convention plugin will find all action classes that implement com.opensymphony.xwork2.Action or //whose name ends with the word Action in specific packages.
//BUT THIS Action Class is never found...
//public class SayHelloAction extends ActionSupport {
// public String execute() throws Exception
//}
//default.properties attached
#
- $Id: default.properties 722328 2008-12-02 01:56:24Z davenewton $
# - 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.
#-
- START SNIPPET: complete_file
-
-
-
- Struts default properties
###(can be overridden by a struts.properties file in the root of the classpath)
###
- Struts default properties
-
-
-
- Specifies the Configuration used to configure Struts
- one could extend org.apache.struts2.config.Configuration
- to build one's customize way of getting the configurations parameters into Struts
-
- struts.configuration=org.apache.struts2.config.DefaultConfiguration
-
-
- This can be used to set your default locale and encoding scheme
-
- struts.locale=en_US
struts.i18n.encoding=UTF-8
-
-
- if specified, the default object factory can be overridden here
- Note: short-hand notation is supported in some cases, such as "spring"
- Alternatively, you can provide a com.opensymphony.xwork2.ObjectFactory subclass name here
-
- struts.objectFactory = spring
-
-
- specifies the autoWiring logic when using the SpringObjectFactory.
- valid values are: name, type, auto, and constructor (name is the default)
struts.objectFactory.spring.autoWire = name
-
-
-
- indicates to the struts-spring integration if Class instances should be cached
- this should, until a future Spring release makes it possible, be left as true
- unless you know exactly what you are doing!
- valid values are: true, false (true is the default)
struts.objectFactory.spring.useClassCache = true
-
-
-
- ensures the autowire strategy is always respected.
- valid values are: true, false (false is the default)
struts.objectFactory.spring.autoWire.alwaysRespect = false
-
-
-
- if specified, the default object type determiner can be overridden here
- Note: short-hand notation is supported in some cases, such as "tiger" or "notiger"
- Alternatively, you can provide a com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation name here
- Note: By default, com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer is used which handles type detection
- using generics. com.opensymphony.xwork2.util.GenericsObjectTypeDeterminer was deprecated since XWork 2, it's
- functions are integrated in DefaultObjectTypeDeterminer now.
- To disable tiger support use the "notiger" property value here.
#struts.objectTypeDeterminer = tiger
#struts.objectTypeDeterminer = notiger
-
-
-
- Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data
-
- struts.multipart.parser=cos
- struts.multipart.parser=pell
struts.multipart.parser=jakarta - uses javax.servlet.context.tempdir by default
struts.multipart.saveDir=
struts.multipart.maxSize=2097152
-
-
- Load custom property files (does not override struts.properties!)
-
- struts.custom.properties=application,org/apache/struts2/extension/custom
-
-
- How request URLs are mapped to and from actions
#struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper
- How request URLs are mapped to and from actions
-
-
-
- Used by the DefaultActionMapper
- You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do
- The blank extension allows you to match directory listings as well as pure action names
- without interfering with static resources.
struts.action.extension=action,,
-
-
-
- Used by FilterDispatcher
- If true then Struts serves static content from inside its jar.
- If false then the static content must be available at <context_path>/struts
struts.serve.static=true
-
-
-
- Used by FilterDispatcher
- This is good for development where one wants changes to the static content be
- fetch on each request.
- NOTE: This will only have effect if struts.serve.static=true
- If true -> Struts will write out header for static contents such that they will
- be cached by web browsers (using Date, Cache-Content, Pragma, Expires)
- headers).
- If false -> Struts will write out header for static contents such that they are
- NOT to be cached by web browser (using Cache-Content, Pragma, Expires
- headers)
struts.serve.static.browserCache=true
-
-
-
- Set this to false if you wish to disable implicit dynamic method invocation
- via the URL request. This includes URLs like foo!bar.action, as well as params
- like method:bar (but not action:foo).
- An alternative to implicit dynamic method invocation is to use wildcard
- mappings, such as <action name="/" method="
{2}" class="actions.{1}">
struts.enable.DynamicMethodInvocation = true
### Set this to true if you wish to allow slashes in your action names. If false,
### Actions names cannot have slashes, and will be accessible via any directory
### prefix. This is the traditional behavior expected of WebWork applications.
### Setting to true is useful when you want to use wildcards and store values
### in the URL, to be extracted by wildcard patterns, such as
### <action name="/" method="{2}" class="actions.
{1}"> to match "/foo/edit" or
- "/foo/save".
struts.enable.SlashesInActionNames = false
-
-
-
- use alternative syntax that requires %{} in most places
- to evaluate expressions for String attributes for tags
struts.tag.altSyntax=true
-
-
-
- when set to true, Struts will act much more friendly for developers. This
- includes:
- - struts.i18n.reload = true
- - struts.configuration.xml.reload = true
- - raising various debug or ignorable problems to errors
- For example: normally a request to foo.action?someUnknownField=true should
- be ignored (given that any value can come from the web and it
- should not be trusted). However, during development, it may be
- useful to know when these errors are happening and be told of
- them right away.
struts.devMode = false
-
-
-
- when set to true, resource bundles will be reloaded on every request.
- this is good during development, but should never be used in production
struts.i18n.reload=false
-
-
-
- Standard UI theme
- Change this to reflect which path should be used for JSP control tag templates by default
struts.ui.theme=xhtml
struts.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix=ftl
-
-
-
- Configuration reloading
- This will cause the configuration to reload struts.xml when it is changed
struts.configuration.xml.reload=false
-
-
-
- Location of velocity.properties file. defaults to velocity.properties
struts.velocity.configfile = velocity.properties
- Location of velocity.properties file. defaults to velocity.properties
-
-
-
- Comma separated list of VelocityContext classnames to chain to the StrutsVelocityContext
struts.velocity.contexts =
- Comma separated list of VelocityContext classnames to chain to the StrutsVelocityContext
-
-
-
- Location of the velocity toolbox
struts.velocity.toolboxlocation=
- Location of the velocity toolbox
-
-
-
- used to build URLs, such as the UrlTag
struts.url.http.port = 80
struts.url.https.port = 443 - possible values are: none, get or all
struts.url.includeParams = none
- used to build URLs, such as the UrlTag
-
-
-
- Load custom default resource bundles
-
- struts.custom.i18n.resources=testmessages,testmessages2
-
-
- workaround for some app servers that don't handle HttpServletRequest.getParameterMap()
- often used for WebLogic, Orion, and OC4J
struts.dispatcher.parametersWorkaround = false
-
-
-
- configure the Freemarker Manager class to be used
- Allows user to plug-in customised Freemarker Manager if necessary
- MUST extends off org.apache.struts2.views.freemarker.FreemarkerManager
#struts.freemarker.manager.classname=org.apache.struts2.views.freemarker.FreemarkerManager
-
-
-
- Enables caching of FreeMarker templates
- Has the same effect as copying the templates under WEB_APP/templates
struts.freemarker.templatesCache=false
-
-
-
- Enables caching of models on the BeanWrapper
struts.freemarker.beanwrapperCache=false
- Enables caching of models on the BeanWrapper
-
-
-
- See the StrutsBeanWrapper javadocs for more information
struts.freemarker.wrapper.altMap=true
- See the StrutsBeanWrapper javadocs for more information
-
-
-
- maxStrongSize for MruCacheStorage for freemarker
struts.freemarker.mru.max.strong.size=100
- maxStrongSize for MruCacheStorage for freemarker
-
-
-
- configure the XSLTResult class to use stylesheet caching.
- Set to true for developers and false for production.
struts.xslt.nocache=false
-
-
-
- Whether to always select the namespace to be everything before the last slash or not
struts.mapper.alwaysSelectFullNamespace=false
- Whether to always select the namespace to be everything before the last slash or not
-
-
-
- Whether to allow static method access in OGNL expressions or not
struts.ognl.allowStaticMethodAccess=false
- Whether to allow static method access in OGNL expressions or not
-
-
-
- END SNIPPET: complete_file
-
//***************say-hello/index.jsp*****************
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>I <em>(State Your Name)</em></title>
</head>
<body>
<h3>Thats <em>Hedley!</em></h3>
<div>
<s:form action="say-hello">
<s:textfield label="Name:" name="userName" size="30" maxlength="30" />
<s:submit value="Submit" />
</s:form>
</div>
</body>
</html>
/**********say-hello-success.jsp**************
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Hello Success</title>
</head>
<body>
Hello <s:property value="userName" />
</body>
</html>