http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/parameters-interceptor.html ---------------------------------------------------------------------- diff --git a/content/docs/parameters-interceptor.html b/content/docs/parameters-interceptor.html index 6ccba05..b653cfb 100644 --- a/content/docs/parameters-interceptor.html +++ b/content/docs/parameters-interceptor.html @@ -34,20 +34,6 @@ under the License. color: #666; } </style> - <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' /> - <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' /> - <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' type='text/javascript'></script> - <script type="text/javascript"> - SyntaxHighlighter.defaults['toolbar'] = false; - SyntaxHighlighter.all(); - </script> <script type="text/javascript" language="javascript"> var hide = null; var show = null; @@ -139,11 +125,8 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p>This interceptor sets all parameters on the value stack.</p><p>This interceptor gets all parameters from {@link ActionContext#getParameters()} and sets them on the value stack by calling <code>ValueStack#setValue(String, Object)</code>, typically resulting in the values submitted in a form request being applied to an action in the value stack. Note that the parameter map must contain a String key and often containers a String[] for the value.</p><p>The interceptor takes one parameter named 'ordered'. When set to true action properties are guaranteed to be set top-down which means that top action's properties are set first. Then it's subcomponents properties are set. The reason for this order is to enable a 'factory' pattern. For example, let's assume that one has an action that contains a property named <code>modelClass</code> that allows to choose what is the underlying implementation of model. By as suring that <code>modelClass</code> property is set before any model properties are set, it's possible to choose model implementation during <code>action.setModelClass()</code> call. Similarly it's possible to use <code>action.setPrimaryKey() </code>property set call to actually load the model class from persistent storage. Without any assumption on parameter order you have to use patterns like <a shape="rect" href="preparable-interface.html">Preparable Interface</a>.</p><p>Because parameter names are effectively OGNL statements, it is important that security be taken in to account. This interceptor will not apply any values in the parameters map if the expression contains an assignment (=), multiple expressions (,), or references any objects in the context (#). This is all done in the <code>#acceptableName(String)</code> method. In addition to this method, if the action being invoked implements the <code>ParameterNameAware</code> in terface, the action will be consulted to determine if the parameter should be set.<br clear="none">In addition to these restrictions, a flag ( <code>ReflectionContextState#DENY_METHOD_EXECUTION</code> ) is set such that no methods are allowed to be invoked. That means that any expression such as <code>person.doSomething()</code> or <code>person.getName()</code> will be explicitly forbidden. This is needed to make sure that your application is not exposed to attacks by malicious users.</p><p>While this interceptor is being invoked, a flag ( <code>ReflectionContextState#CREATE_NULL_OBJECTS</code> ) is turned on to ensure that any null reference is automatically created - if possible. See the type conversion documentation and the <code>InstantiatingNullHandler</code> javadocs for more information.</p><p>Finally, a third flag ( <code>XWorkConverter#REPORT_CONVERSION_ERRORS</code> ) is set that indicates any errors when converti ng the the values to their final data type (String[] -&gt; int) an unrecoverable error occurred. With this flag set, the type conversion errors will be reported in the action context. See the type conversion documentation and the <code>XWorkConverter</code> javadocs for more information.<br clear="none"><br clear="none">If you are looking for detailed logging information about your parameters, turn on <code>DEBUG</code> level logging for this interceptor. A detailed log of all the parameter keys and values will be reported.<br clear="none"><br clear="none"></p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Since XWork 2.0.2, this interceptor extends <code>MethodFilterInterceptor</code>, therefore being able to deal with <code>excludeMethods</code> / <code>includeMethods</code> p arameters. See <a shape="rect" href="default-workflow-interceptor.html">Default Workflow Interceptor</a> for documentation and examples on how to use this feature.</p></div></div><p>For more information on ways to restrict the parameter names allowed, see the <code>ParameterNameAware</code> javadocs.</p><h2 id="ParametersInterceptor-Parameters">Parameters</h2><ul style="list-style-type: square;"><li><code>ordered</code> - set to true if you want the top-down property setter behaviour</li><li><code>acceptParamNames</code> - a comma delimited list of regular expressions to describe a whitelist of accepted parameter names. Don't change the default unless you know what you are doing in terms of security implications</li><li><code>excludeParams</code> - a comma delimited list of regular expressions to describe a blacklist of not allowed parameter names</li><li><code>paramNameMaxLength</code> - the maximum length of parameter names; parameters with longer nam es will be ignored; the default is 100 characters</li></ul><h2 id="ParametersInterceptor-Excludingparameters">Excluding parameters</h2><p>This interceptor can be forced to ignore parameters, by setting its <em>excludeParams</em> attribute. This attribute accepts a comma separated list of regular expressions. When any of these expressions match the name of a parameter, such parameter will be ignored by the interceptor. Interceptor stacks defined by Struts already exclude some parameters:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Default List of Parameters Excluded</b></div><div class="codeContent panelContent pdl"> -<pre class="brush: html; gutter: false; theme: Default" style="font-size:12px;">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...* -</pre> -</div></div><p>Below is an example of adding a parameter named submit to the list of parameters that should be excluded.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Setup Interceptor Stack To Exclude submit Parameter</b></div><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><interceptors> + <div id="ConfluenceContent"><p>This interceptor sets all parameters on the value stack.</p><p>This interceptor gets all parameters from {@link ActionContext#getParameters()} and sets them on the value stack by calling <code>ValueStack#setValue(String, Object)</code>, typically resulting in the values submitted in a form request being applied to an action in the value stack. Note that the parameter map must contain a String key and often containers a String[] for the value.</p><p>The interceptor takes one parameter named 'ordered'. When set to true action properties are guaranteed to be set top-down which means that top action's properties are set first. Then it's subcomponents properties are set. The reason for this order is to enable a 'factory' pattern. For example, let's assume that one has an action that contains a property named <code>modelClass</code> that allows to choose what is the underlying implementation of model. By as suring that <code>modelClass</code> property is set before any model properties are set, it's possible to choose model implementation during <code>action.setModelClass()</code> call. Similarly it's possible to use <code>action.setPrimaryKey() </code>property set call to actually load the model class from persistent storage. Without any assumption on parameter order you have to use patterns like <a shape="rect" href="preparable-interface.html">Preparable Interface</a>.</p><p>Because parameter names are effectively OGNL statements, it is important that security be taken in to account. This interceptor will not apply any values in the parameters map if the expression contains an assignment (=), multiple expressions (,), or references any objects in the context (#). This is all done in the <code>#acceptableName(String)</code> method. In addition to this method, if the action being invoked implements the <code>ParameterNameAware</code> in terface, the action will be consulted to determine if the parameter should be set.<br clear="none">In addition to these restrictions, a flag ( <code>ReflectionContextState#DENY_METHOD_EXECUTION</code> ) is set such that no methods are allowed to be invoked. That means that any expression such as <code>person.doSomething()</code> or <code>person.getName()</code> will be explicitly forbidden. This is needed to make sure that your application is not exposed to attacks by malicious users.</p><p>While this interceptor is being invoked, a flag ( <code>ReflectionContextState#CREATE_NULL_OBJECTS</code> ) is turned on to ensure that any null reference is automatically created - if possible. See the type conversion documentation and the <code>InstantiatingNullHandler</code> javadocs for more information.</p><p>Finally, a third flag ( <code>XWorkConverter#REPORT_CONVERSION_ERRORS</code> ) is set that indicates any errors when converti ng the the values to their final data type (String[] -&gt; int) an unrecoverable error occurred. With this flag set, the type conversion errors will be reported in the action context. See the type conversion documentation and the <code>XWorkConverter</code> javadocs for more information.<br clear="none"><br clear="none">If you are looking for detailed logging information about your parameters, turn on <code>DEBUG</code> level logging for this interceptor. A detailed log of all the parameter keys and values will be reported.<br clear="none"><br clear="none"></p><rich-text-body><p>Since XWork 2.0.2, this interceptor extends <code>MethodFilterInterceptor</code>, therefore being able to deal with <code>excludeMethods</code> / <code>includeMethods</code> parameters. See <a shape="rect" href="default-workflow-interceptor.html">Default Workflow Interceptor</a> for documentation and examples on how to use this feature.</p></rich-text-body><p>For more information on ways to restrict the parameter names allowed, see the <code>ParameterNameAware</code> javadocs.</p><h2 id="ParametersInterceptor-Parameters">Parameters</h2><ul style="list-style-type: square;"><li><code>ordered</code> - set to true if you want the top-down property setter behaviour</li><li><code>acceptParamNames</code> - a comma delimited list of regular expressions to describe a whitelist of accepted parameter names. Don't change the default unless you know what you are doing in terms of security implications</li><li><code>excludeParams</code> - a comma delimited list of regular expressions to describe a blacklist of not allowed parameter names</li><li><code>paramNameMaxLength</code> - the maximum length of parameter names; parameters with longer names will be ignored; the default is 100 characters</li></ul><h2 id="ParametersInterceptor-Excludingparameters">Excluding parameters</h2><p>This interceptor can be forced to ignore parameters, by setting its <em>excludeParams</em> attribute. This attribute accepts a comma separated list of regular expressions. When any of these expressions match the name of a parameter, such parameter will be ignored by the interceptor. Interceptor stacks defined by Struts already exclude some parameters:</p><parameter ac:name="title">Default List of Parameters Excluded</parameter><parameter ac:name="">HTML</parameter><plain-text-body>dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...* +</plain-text-body><p>Below is an example of adding a parameter named submit to the list of parameters that should be excluded.</p><parameter ac:name="title">Setup Interceptor Stack To Exclude submit Parameter</parameter><parameter ac:name="">XML</parameter><plain-text-body><interceptors> <interceptor-stack name="appDefault"> <interceptor-ref name="defaultStack"> <param name="exception.logEnabled">true</param> @@ -154,21 +137,16 @@ under the License. </interceptors> <default-interceptor-ref name="appDefault" /> -</pre> -</div></div><h2 id="ParametersInterceptor-ExtendingtheInterceptor">Extending the Interceptor</h2><p>The best way to add behavior to this interceptor is to utilize the <code>ParameterNameAware</code> interface in your actions. However, if you wish to apply a global rule that isn't implemented in your action, then you could extend this interceptor and override the <code>#acceptableName(String)</code> method.</p><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Using <code>ParameterNameAware</code> could be dangerous as <code>ParameterNameAware#acceptableParameterName(String)</code> takes precedence over <code>ParametersInterceptor</code> which means if <code>ParametersInterceptor</code> excluded given parameter name you can accept it with <code>ParameterNameAware#acceptableParameterName(Stri ng)</code>.</p><p>The best idea is to define very tight restrictions with <code>ParametersInterceptor</code> and relax them per action with <code>ParameterNameAware#acceptableParameterName(String)</code></p></div></div><h2 id="ParametersInterceptor-Warningonmissingparameters">Warning on missing parameters</h2><p>When there is no setter for given parameter name, a warning message like below will be logged in devMode:</p><div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent"> -<pre>SEVERE: Developer Notification (set struts.devMode to false to disable this message): +</plain-text-body><h2 id="ParametersInterceptor-ExtendingtheInterceptor">Extending the Interceptor</h2><p>The best way to add behavior to this interceptor is to utilize the <code>ParameterNameAware</code> interface in your actions. However, if you wish to apply a global rule that isn't implemented in your action, then you could extend this interceptor and override the <code>#acceptableName(String)</code> method.</p><rich-text-body><p>Using <code>ParameterNameAware</code> could be dangerous as <code>ParameterNameAware#acceptableParameterName(String)</code> takes precedence over <code>ParametersInterceptor</code> which means if <code>ParametersInterceptor</code> excluded given parameter name you can accept it with <code>ParameterNameAware#acceptableParameterName(String)</code>.</p><p>The best idea is to define very tight restrictions with <code>ParametersInterceptor</code> and relax them per action with <code>ParameterNameAware#acceptableParameterName(String)</code ></p></rich-text-body><h2 >id="ParametersInterceptor-Warningonmissingparameters">Warning on missing >parameters</h2><p>When there is no setter for given parameter name, a warning >message like below will be logged in devMode:</p><plain-text-body>SEVERE: >Developer Notification (set struts.devMode to false to disable this message): Unexpected Exception caught setting 'search' on 'class demo.ItemSearchAction: Error setting expression 'search' with value ['search', ] Error setting expression 'search' with value ['search', ] - [unknown location] at com.opensymphony.xwork2.ognl.OgnlValueStack.handleRuntimeException(OgnlValueStack.java:201) at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:178) at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:152) -</pre> -</div></div><p>Thus is expected behaviour to allow developer to spot missing setter or typo in either parameter name or setter.</p><h2 id="ParametersInterceptor-Examples">Examples</h2><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"><action name="someAction" class="com.examples.SomeAction"> +</plain-text-body><p>Thus is expected behaviour to allow developer to spot missing setter or typo in either parameter name or setter.</p><h2 id="ParametersInterceptor-Examples">Examples</h2><plain-text-body><action name="someAction" class="com.examples.SomeAction"> <interceptor-ref name="params"/> <result name="success">good_result.ftl</result> -</action></pre> -</div></div></div> +</action></plain-text-body></div> </div>
http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/password.html ---------------------------------------------------------------------- diff --git a/content/docs/password.html b/content/docs/password.html index bcb1f2c..466672e 100644 --- a/content/docs/password.html +++ b/content/docs/password.html @@ -152,7 +152,7 @@ under the License. <h2 id="password-Examples">Examples</h2> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: plain; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <p> In this example, a password control is displayed. For the label, we are calling ActionSupport's getText() to retrieve password label from a resource bundle. @@ -160,7 +160,7 @@ retrieve password label from a resource bundle. ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:password label="%{text('password')}" name="password" size="10" maxlength="15" /> ]]></script> </div></div></div> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/plugins.html ---------------------------------------------------------------------- diff --git a/content/docs/plugins.html b/content/docs/plugins.html index d21f77b..c1f9137 100644 --- a/content/docs/plugins.html +++ b/content/docs/plugins.html @@ -34,20 +34,6 @@ under the License. color: #666; } </style> - <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' /> - <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' /> - <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' type='text/javascript'></script> - <script type="text/javascript"> - SyntaxHighlighter.defaults['toolbar'] = false; - SyntaxHighlighter.all(); - </script> <script type="text/javascript" language="javascript"> var hide = null; var show = null; @@ -139,19 +125,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p>Struts 2 plugins contain classes and configuration that extend, replace, or add to existing Struts framework functionality. A plugin can be installed by adding its JAR file to the application's class path, in addition to the JAR files to fulfill whatever dependencies the plugin itself may have. To configure the plugin, the JAR should contain a <code>struts-plugin.xml</code> file, which follows the same format as an ordinary <code>struts.xml</code> file.</p><p>Since a plugin can contain the <code>struts-plugin.xml</code> file, it has the ability to:</p><ul><li>Define new packages with results, interceptors, and/or actions</li><li>Override framework constants</li><li>Introduce new extension point implementation classes</li></ul><p>Many popular but optional features of the framework are distributed as plugins. An application can retain all the plugins provided with the distribution, or just include the ones it uses. Plugins can be used to orga nize application code or to distribute code to third-parties.</p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Packages defined in a plugin can have parent packages that are defined in another plugin. Plugins may define configuration elements with classes not contained in the plugin. Any classes not included in the plugin's JAR must be on the application's classpath at runtime. As from Struts 2.3.5</p></div></div><p>The framework loads its default configuration first, then any plugin configuration files found in others JARs on the classpath, and finally the "bootstrap" <code>struts.xml</code>.</p><ol><li><code>struts-default.xml</code> (bundled in the Core JAR)</li><li><code>struts-plugin.xml</code> (as many as can be found in other JARs)</li><li><code>struts.xml</code> (provided by your application)</li>< /ol><p>Since the <code>struts.xml</code> file is always loaded last, it can make use of any resources provided by the plugins bundled with the distribution, or any other plugins available to an application.</p><h2 id="Plugins-Staticresources">Static resources</h2><p>To include static resources in your plugins add them under "/static" in your jar. And include them in your page using "/struts" as the path, like in the following example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: html; gutter: false; theme: Default" style="font-size:12px;">Assuming /static/main.css is inside a plugin jar, to add it to the page: + <div id="ConfluenceContent"><p>Struts 2 plugins contain classes and configuration that extend, replace, or add to existing Struts framework functionality. A plugin can be installed by adding its JAR file to the application's class path, in addition to the JAR files to fulfill whatever dependencies the plugin itself may have. To configure the plugin, the JAR should contain a <code>struts-plugin.xml</code> file, which follows the same format as an ordinary <code>struts.xml</code> file.</p><p>Since a plugin can contain the <code>struts-plugin.xml</code> file, it has the ability to:</p><ul><li>Define new packages with results, interceptors, and/or actions</li><li>Override framework constants</li><li>Introduce new extension point implementation classes</li></ul><p>Many popular but optional features of the framework are distributed as plugins. An application can retain all the plugins provided with the distribution, or just include the ones it uses. Plugins can be used to orga nize application code or to distribute code to third-parties.</p><rich-text-body><p>Packages defined in a plugin can have parent packages that are defined in another plugin. Plugins may define configuration elements with classes not contained in the plugin. Any classes not included in the plugin's JAR must be on the application's classpath at runtime. As from Struts 2.3.5</p></rich-text-body><p>The framework loads its default configuration first, then any plugin configuration files found in others JARs on the classpath, and finally the "bootstrap" <code>struts.xml</code>.</p><ol><li><code>struts-default.xml</code> (bundled in the Core JAR)</li><li><code>struts-plugin.xml</code> (as many as can be found in other JARs)</li><li><code>struts.xml</code> (provided by your application)</li></ol><p>Since the <code>struts.xml</code> file is always loaded last, it can make use of any resources provided by the plugins bundled with the distribution, or any other plugins available to an applicat ion.</p><h2 id="Plugins-Staticresources">Static resources</h2><p>To include static resources in your plugins add them under "/static" in your jar. And include them in your page using "/struts" as the path, like in the following example:</p><parameter ac:name="">html</parameter><plain-text-body>Assuming /static/main.css is inside a plugin jar, to add it to the page: <@s.url value="/struts/main.css" var="css" /> <link rel="stylesheet" type="text/css" href="%{#css}" /> -</pre> -</div></div><p>Read also <a shape="rect" class="external-link" href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/StaticContentLoader.html">StaticContentLoader JavaDoc</a>.</p><h2 id="Plugins-ExtensionPoints">Extension Points</h2><p>Extension points allow a plugin to override a key class in the Struts framework with an alternate implementation. For example, a plugin could provide a new class to create Action classes or map requests to Actions.</p><p>The following extension points are available in Struts 2:</p><p><table border="1" summary=""><tr><th colspan="1" rowspan="1">Type</th><th colspan="1" rowspan="1">Property</th><th colspan="1" rowspan="1">Scope</th><th colspan="1" rowspan="1">Description</th></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.ObjectFactory</td><td colspan="1" rowspan="1">struts.objectFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates actions, results, and interceptors</td></ tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.factory.ActionFactory</td><td colspan="1" rowspan="1">struts.objectFactory.actionFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to create Actions, you can implement/extend existing one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.factory.ResultFactory</td><td colspan="1" rowspan="1">struts.objectFactory.resultFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to create Results, you can implement/extend existing one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.factory.InterceptorFactory</td><td colspan="1" rowspan="1">struts.objectFactory.interceptorFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to create Interceptors, you can implement/extend e xisting one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.factory.ConverterFactory</td><td colspan="1" rowspan="1">struts.objectFactory.converterFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to create TypeConverters, you can implement/extend existing one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.factory.ValidatorFactory</td><td colspan="1" rowspan="1">struts.objectFactory.validatorFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to create Validators, you can implement/extend existing one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.ActionProxyFactory</td><td colspan="1" rowspan="1">struts.actionProxyFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates the Actio nProxy</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.util.ObjectTypeDeterminer</td><td colspan="1" rowspan="1">struts.objectTypeDeterminer</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Determines what the key and element class of a Map or Collection should be</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.dispatcher.mapper.ActionMapper</td><td colspan="1" rowspan="1">struts.mapper.class</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Determines the ActionMapping from a request and a URI from an ActionMapping</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.dispatcher.multipart.MultiPartRequest</td><td colspan="1" rowspan="1">struts.multipart.parser</td><td colspan="1" rowspan="1">per request</td><td colspan="1" rowspan="1">Parses a multipart request (file upload)</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.views.freemarker.FreemarkerManager</td><td colspan="1" rowspan="1" >struts.freemarker.manager.classname</td><td colspan="1" >rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads and processes >Freemarker templates</td></tr><tr><td colspan="1" >rowspan="1">org.apache.struts2.views.velocity.VelocityManager</td><td >colspan="1" rowspan="1">struts.velocity.manager.classname</td><td colspan="1" >rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads and processes >Velocity templates</td></tr><tr><td colspan="1" >rowspan="1">com.opensymphony.xwork2.validator.ActionValidatorManager</td><td >colspan="1" rowspan="1">struts.actionValidatorManager</td><td colspan="1" >rowspan="1">singleton</td><td colspan="1" rowspan="1">Main interface for >validation managers (regular and annotation based). Handles both the loading >of - configuration and the actual validation (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.util.ValueStackFactory</td><td colspan="1" rowspan="1">struts.valueStackFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates value stacks (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.reflection.ReflectionProvider</td><td colspan="1" rowspan="1">struts.reflectionProvider</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides reflection services, key place to plug in a custom expression language (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.reflection.ReflectionContextFactory</td><td colspan="1" rowspan="1">struts.reflectionContextFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates reflection context maps used for reflection and expression language operations (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.config.PackageProvider</td><td colspan="1" rowspan="1">N/A</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">All beans registered as PackageProvider implementations will be automatically included in configuration building (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.util.PatternMatcher</td><td colspan="1" rowspan="1">struts.patternMatcher</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches patterns, such as action names, generally used in configuration (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.views.dispatcher.DefaultStaticContentLoader</td><td colspan="1" rowspan="1">struts.staticContentLoader</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads static resources (since 2.1)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.impl.XWorkConverter</td><td colspan="1" rowspan="1">strut s.xworkConverter</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Handles conversion logic and allows to load custom converters per class or per action</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.TextProvider</td><td colspan="1" rowspan="1">struts.xworkTextProvider</td><td colspan="1" rowspan="1">default</td><td colspan="1" rowspan="1">Allows provide custom TextProvider for whole application</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.LocaleProvider</td><td colspan="1" rowspan="1">struts.localeProvider</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">DEPRECATED! Allows provide custom TextProvider for whole application - instead this endpoint use <b>struts.localeProviderFactory</b></td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.LocaleProviderFactory</td><td colspan="1" rowspan="1">struts.localeProviderFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowsp an="1">Allows provide custom LocaleProvider for whole application</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.components.UrlRenderer</td><td colspan="1" rowspan="1">struts.urlRenderer</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Allows provide custom implementation of environment specific URL rendering/creating class</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.UnknownHandlerManager</td><td colspan="1" rowspan="1">struts.unknownHandlerManager</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Implementation of this interface allows handle logic of unknown Actions, Methods or Results</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.views.util.UrlHelper</td><td colspan="1" rowspan="1">struts.view.urlHelper</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Helper class used with URLRenderer to provide exact logic for building URLs</td></tr><tr><td colspan="1" rowsp an="1">com.opensymphony.xwork2.FileManagerFactory</td><td colspan="1" rowspan="1">struts.fileManagerFactory</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Used to create FileManager instance to access files on the File System as also to monitor if reload is needed, - can be implemented / overwritten to meet specific an application server needs - </td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.impl.CollectionConverter</td><td colspan="1" rowspan="1">struts.converter.collection</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert any object to Collection and back</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.impl.ArrayConverter</td><td colspan="1" rowspan="1">struts.converter.array</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert any object to Array and back</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.impl.DateConverter</td><td colspan="1" rowspan="1">struts.converter.date</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert any object to Date and back</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.impl.NumberConverter</td><td colspan="1" rowspan="1">struts.conv erter.number</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert any object to Number and back</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.impl.StringConverter</td><td colspan="1" rowspan="1">struts.converter.string</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert any object to String and back</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td><td colspan="1" rowspan="1">struts.conversion.properties.processor</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process Properties to create converters</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td><td colspan="1" rowspan="1">struts.converter.file.processor</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process <class>-conversion.pro perties file create converters</class></td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor</td><td colspan="1" rowspan="1">struts.converter.annotation.processor</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process TypeConversion annotation to create converters</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.TypeConverterCreator</td><td colspan="1" rowspan="1">struts.converter.creator</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates user converters</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.conversion.TypeConverterHolder</td><td colspan="1" rowspan="1">struts.converter.holder</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Holds user converters' instances</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.util.TextParser</td><td colspan="1" rowspan="1">struts.expression.parse r</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Used to parse expressions like ${foo.bar} or %{bar.foo} but it is up tp the TextParser's - implementation what kind of opening char to use (#, $, %, etc)</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.ExcludedPatternsChecker</td><td colspan="1" rowspan="1">struts.excludedPatterns.checker</td><td colspan="1" rowspan="1">request</td><td colspan="1" rowspan="1">Used across different interceptors to check if given string matches one of the excluded patterns</td></tr><tr><td colspan="1" rowspan="1">com.opensymphony.xwork2.AcceptedPatternsChecker</td><td colspan="1" rowspan="1">struts.acceptedPatterns.checker</td><td colspan="1" rowspan="1">request</td><td colspan="1" rowspan="1">Used across different interceptors to check if given string matches one of the accepted patterns</td></tr><tr><td colspan="1" rowspan="1">org.apache.struts2.util.ContentTypeMatcher</td><td colspan="1" rowspan="1">struts.contentTypeMatcher</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches content type of uploaded files (since 2.3.22)</td></tr><tr ><td colspan="1" >rowspan="1">com.opensymphony.xwork2.LocalizedTextProvider</td><td colspan="1" >rowspan="1">struts.localizedTextProvider</td><td colspan="1" >rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides access to >resource bundles used to localise messages (since >2.5.11)</td></tr></table></p> -<h2 id="Plugins-PluginExamples">Plugin Examples</h2><p>Let's look at two similar but different plugins bundled with the core distribution.</p><h3 id="Plugins-Sitemeshplugin">Sitemesh plugin</h3><p><a shape="rect" class="external-link" href="http://opensymphony.com/sitemesh/" rel="nofollow">SiteMesh</a> is a popular alternative to Tiles. SiteMesh provides a common look-and-feel to an application's pages by automatically wrapping a plain page with common elements like headers and menubars.</p><p>The <code>sitemesh-plugin.jar</code> contains several classes, a standard JAR manifest, and a plugin configuration file.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> + META-INF/ +</plain-text-body><p>Read also <a shape="rect" class="external-link" href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/StaticContentLoader.html">StaticContentLoader JavaDoc</a>.</p><h2 id="Plugins-ExtensionPoints">Extension Points</h2><p>Extension points allow a plugin to override a key class in the Struts framework with an alternate implementation. For example, a plugin could provide a new class to create Action classes or map requests to Actions.</p><p>The following extension points are available in Struts 2:</p><plain-text-body>{snippet:id=extensionPoints|javadoc=true|url=org.apache.struts2.config.DefaultBeanSelectionProvider}</plain-text-body><h2 id="Plugins-PluginExamples">Plugin Examples</h2><p>Let's look at two similar but different plugins bundled with the core distribution.</p><h3 id="Plugins-Sitemeshplugin">Sitemesh plugin</h3><p><a shape="rect" class="external-link" href="http://opensymphony.com/sitemesh/" rel="nofollow">SiteMesh</a> is a popular alternative to Tiles. SiteMesh provides a common look-and-feel to an application's pages by automatically wrapping a plain page with common elements like headers and menubars.</p><p>The <code>sitemesh-plugin.jar</code> contains several classes, a standard JAR manifest, and a plugin configuration file.</p><plain-text-body> + META-INF/ + manifest.mf + org + apache @@ -161,43 +139,7 @@ under the License. + TemplatePageFilter.class + VelocityPageFilter.class + struts-plugin.xml -</pre> -</div></div><p>While the SiteMesh Plugin doesn't provide any new results, interceptors, or actions, or even extend any Struts integration points, it does need to know what settings have been enabled in the Struts framework. Therefore, its <code>struts-plugin.xml</code> looks like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- -/* - * $Id$ - * - * 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. - */ ---> -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" - "http://struts.apache.org/dtds/struts-2.5.dtd"> - -<struts> - <bean class="org.apache.struts2.sitemesh.FreemarkerPageFilter" static="true" optional="true"/> - <bean class="org.apache.struts2.sitemesh.VelocityPageFilter" static="true" optional="true"/> -</struts> -]]></script> -</div></div><p>The two bean elements, with the "static" flag enabled, tell Struts to inject the current settings and framework objects into static property setters on startup. This allows, for example, the FreeMarkerPageFilter class to get an instance of the Struts FreemarkerManager and the current encoding setting.</p><h3 id="Plugins-Tilesplugin">Tiles plugin</h3><p><a shape="rect" class="external-link" href="http://struts.apache.org/struts-sandbox/tiles/index.html">Tiles</a> is a popular alternative to SiteMesh. Tiles provides a common look-and-feel to an application's pages by breaking the page down into common fragments or "tiles".</p><p>The <code>tiles-plugin.jar</code> contains several classes, a standard JAR manifest, and a configuration file.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> + META-INF/ +</plain-text-body><p>While the SiteMesh Plugin doesn't provide any new results, interceptors, or actions, or even extend any Struts integration points, it does need to know what settings have been enabled in the Struts framework. Therefore, its <code>struts-plugin.xml</code> looks like this:</p><plain-text-body>{snippet:id=all|lang=xml|url=struts2/plugins/sitemesh/src/main/resources/struts-plugin.xml}</plain-text-body><p>The two bean elements, with the "static" flag enabled, tell Struts to inject the current settings and framework objects into static property setters on startup. This allows, for example, the FreeMarkerPageFilter class to get an instance of the Struts FreemarkerManager and the current encoding setting.</p><h3 id="Plugins-Tilesplugin">Tiles plugin</h3><p><a shape="rect" class="external-link" href="http://struts.apache.org/struts-sandbox/tiles/index.html">Tiles</a> is a popular alternative to SiteMesh. Tiles provides a common look-and-feel to an application's pages by breaking the page down into common fragments or "tiles".</p><p>The <code>tiles-plugin.jar</code> contains several classes, a standard JAR manifest, and a configuration file.</p><plain-text-body> + META-INF/ + manifest.mf + org + apache @@ -209,8 +151,7 @@ under the License. + tiles + TilesResult.class + struts-plugin.xml -</pre> -</div></div><p>Since the Tiles Plugin does need to register configuration elements, a result class, it provides a <code>struts-plugin.xml</code> file.</p><h2 id="Plugins-PluginRegistry">Plugin Registry</h2><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> For a list of bundled plugins, see the <a shape="rect" href="plugin-developers-guide.html">Plugin Reference Documentation</a>. For more about bundled and third-party plugins, visit the <a shape="rect" class="external-link" href="http://cwiki.apache.org/S2PLUGINS/home.html">Apache Struts Plugin Registry</a>.</p><h2 id="Plugins-Backto">Back to <a shape="rect" href="home.html">Home</a></h2></div> +</plain-text-body><p>Since the Tiles Plugin does need to register configuration elements, a result class, it provides a <code>struts-plugin.xml</code> file.</p><h2 id="Plugins-PluginRegistry">Plugin Registry</h2><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> For a list of bundled plugins, see the <a shape="rect" href="plugin-developers-guide.html">Plugin Reference Documentation</a>. For more about bundled and third-party plugins, visit the <a shape="rect" class="external-link" href="http://cwiki.apache.org/S2PLUGINS/home.html">Apache Struts Plugin Registry</a>.</p><h2 id="Plugins-Backto">Back to <a shape="rect" href="home.html">Home</a></h2></div> </div> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/prepare-interceptor.html ---------------------------------------------------------------------- diff --git a/content/docs/prepare-interceptor.html b/content/docs/prepare-interceptor.html index c079d51..61b7a43 100644 --- a/content/docs/prepare-interceptor.html +++ b/content/docs/prepare-interceptor.html @@ -190,7 +190,7 @@ otherwise it will not.</li></ul><p></p> <h2 id="PrepareInterceptor-Examples">Examples</h2> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <!-- Calls the params interceptor twice, allowing you to pre-load data for the second time parameters are set --> <action name="someAction" class="com.examples.SomeAction"> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/profiling.html ---------------------------------------------------------------------- diff --git a/content/docs/profiling.html b/content/docs/profiling.html index a299a76..efa43f2 100644 --- a/content/docs/profiling.html +++ b/content/docs/profiling.html @@ -34,20 +34,6 @@ under the License. color: #666; } </style> - <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' /> - <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' /> - <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' type='text/javascript'></script> - <script type="text/javascript"> - SyntaxHighlighter.defaults['toolbar'] = false; - SyntaxHighlighter.all(); - </script> <script type="text/javascript" language="javascript"> var hide = null; var show = null; @@ -143,29 +129,11 @@ under the License. <h2 id="Profiling-Profilingaspects">Profiling aspects </h2> -<p></p><p> -Struts2 profiling aspects involves the following: -</p> - -<p></p><ul><li>ActionContextCleanUp</li><li>FreemarkerPageFilter</li><li>DispatcherFilter - <ul><li>Dispatcher - <ul><li>creation of DefaultActionProxy - <ul><li>creation of DefaultActionInvocation - <ul><li>creation of Action</li></ul> - </li></ul> - </li><li>execution of DefaultActionProxy - <ul><li>invocation of DefaultActionInvocation - <ul><li>invocation of Interceptors</li><li>invocation of Action</li><li>invocation of PreResultListener</li><li>invocation of Result</li></ul> - </li></ul> - </li></ul> - </li></ul> - </li></ul> - +<plain-text-body>{snippet:id=profilingAspect_struts2|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body> <h2 id="Profiling-Using">Using</h2> <p>To enable profiling, first make sure that the <code>profiling</code> interceptor is applied to your action, like:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<parameter ac:name="">xml</parameter><plain-text-body> <action ... > ... <interceptor-ref name="profiling"> @@ -173,49 +141,26 @@ Struts2 profiling aspects involves the following: </interceptor-ref> ... </action> -</pre> -</div></div> +</plain-text-body> <p>Then enable profiling using one of the following methods:</p> <h3 id="Profiling-ActivateThroughSystemproperty">Activate Through System property</h3> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ - - -Dxwork.profile.activate=true - -]]></script> -</div></div> -<p></p><p> -This could be done in the container startup script eg. CATALINA_OPTS in catalina.sh -(tomcat) or using 'java -Dxwork.profile.activate=true -jar start.jar' (jetty) -</p> +<plain-text-body>{snippet:id=activationThroughSystemProperty|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body> +<plain-text-body>{snippet:id=activationThroughSystemPropertyDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body> <h3 id="Profiling-ActivateThroughcode">Activate Through code</h3> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ - - UtilTimerStack.setActivate(true); - -]]></script> -</div></div> -<p></p><p> -This could be done in a static block, in a Spring bean with lazy-init='false', -in a Servlet with init-on-startup as some numeric value, in a Filter or -Listener's init method etc. -</p> +<plain-text-body>{snippet:id=activationThroughCode|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body> +<plain-text-body>{snippet:id=activationThroughCodeDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body> <h3 id="Profiling-ActivateThroughparameter">Activate Through parameter</h3> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<plain-text-body> http://host:port/context/namespace/someAction.action?profiling=true -</pre> -</div></div> +</plain-text-body> <h3 id="Profiling-Changingtheactivationparametername">Changing the activation parameter name</h3> <p>Set the <code>profilingKey</code> attribute of the <code>profiling</code> interceptor to the desired name:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<parameter ac:name="">xml</parameter><plain-text-body> <action ... > ... <interceptor-ref name="profiling"> @@ -223,27 +168,23 @@ http://host:port/context/namespace/someAction.action?profiling=true </interceptor-ref> ... </action> -</pre> -</div></div> +</plain-text-body> -<div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> -<p>Profiling activation through a parameter requires <code>struts.devMode</code> to be <code>true</code>.</p></div></div> +<rich-text-body> +<p>Profiling activation through a parameter requires <code>struts.devMode</code> to be <code>true</code>.</p></rich-text-body> <h2 id="Profiling-Filteringprofileinformation">Filtering profile information</h2> <p>One could filter out the profile logging by having a System property as follows:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<plain-text-body> -Dxwork.profile.mintime=10000 -</pre> -</div></div> +</plain-text-body> <p> With this <code>xwork.profile.mintime</code> property, one could only log profile information when its execution time exceed those specified in <code>xwork.profile.mintime</code> system property. If no such property is specified, it will be assumed to be 0, hence all profile information will be logged.</p> <h2 id="Profiling-Writeprofilingcode">Write profiling code</h2> <p>One could extend the profiling feature provided by Struts2 in their web application as well. </p> <h3 id="Profiling-UsingUtilTimerStack'spushandpop">Using UtilTimerStack's push and pop</h3> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<parameter ac:name="">java</parameter><plain-text-body> String logMessage = "Log message"; UtilTimerStack.push(logMessage); try { @@ -251,12 +192,10 @@ try { } finally { UtilTimerStack.pop(logMessage); // this needs to be the same text as above } -</pre> -</div></div> +</plain-text-body> <h3 id="Profiling-UsingaUtilTimerStack'sProfileBlocktemplate">Using a UtilTimerStack's ProfileBlock template</h3> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<parameter ac:name="">java</parameter><plain-text-body> String result = UtilTimerStack.profile("purchaseItem: ", new UtilTimerStack.ProfilingBlock<String>() { public String doProfiling() { @@ -264,8 +203,7 @@ String result = UtilTimerStack.profile("purchaseItem: ", return "Ok"; } }); -</pre> -</div></div> +</plain-text-body> <h2 id="Profiling-ProfilingLogfiles">Profiling Log files</h2> <p>Profiled result is logged using commons-logging under the logger named <code>com.opensymphony.xwork2.util.profiling.UtilTimerStack</code>. Depending on the underlying logging implementation, say if it is Log4j, one could direct the log to appear in a different file, being emailed to someone or have it stored in the db.</p> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/property.html ---------------------------------------------------------------------- diff --git a/content/docs/property.html b/content/docs/property.html index 0eb0de2..04ac9c2 100644 --- a/content/docs/property.html +++ b/content/docs/property.html @@ -143,7 +143,7 @@ under the License. Used to get the property of a <i>value</i>, which will default to the top of the stack if none is specified. </p><h1 id="property-Parameters">Parameters</h1><p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes Allowed:</h4> false</td></tr><tr><td colspan="6" rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1" valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1" valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1" valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1" valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1" valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1" valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1" rowspan="1" valign="top">default</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">String</td><td align="l eft" colspan="1" rowspan="1" valign="top">The default value to be used if <u>value</u> attribute is null</td></tr><tr><td align="left" colspan="1" rowspan="1" valign="top">escapeCsv</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" valign="top">Whether to escape CSV (useful to escape a value for a column)</td></tr><tr><td align="left" colspan="1" rowspan="1" valign="top">escapeHtml</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">true</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" valign="top">Whether to escape HTML</td></tr><tr><td alig n="left" colspan="1" rowspan="1" valign="top">escapeJavaScript</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" valign="top">Whether to escape Javascript</td></tr><tr><td align="left" colspan="1" rowspan="1" valign="top">escapeXml</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" valign="top">Whether to escape XML</td></tr><tr><td align="left" colspan="1" rowspan="1" valign="top">value</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rows pan="1" valign="top"><top of stack></td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" valign="top">Object</td><td align="left" colspan="1" rowspan="1" valign="top">Value to be displayed</td></tr></table></p><h1 id="property-Examples">Examples</h1><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:push value="myBean"> <!-- Example 1: --> @@ -155,7 +155,7 @@ the stack if none is specified. ]]></script> </div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: plain; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ Example 1 prints the result of myBean's getMyBeanProperty() method. Example 2 prints the result of myBean's getMyBeanProperty() method and if it is null, print 'a default value' instead. ]]></script> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/pure-javascript-client-side-validation.html ---------------------------------------------------------------------- diff --git a/content/docs/pure-javascript-client-side-validation.html b/content/docs/pure-javascript-client-side-validation.html index 42f63db..9c4ecbe 100644 --- a/content/docs/pure-javascript-client-side-validation.html +++ b/content/docs/pure-javascript-client-side-validation.html @@ -34,20 +34,6 @@ under the License. color: #666; } </style> - <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' /> - <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' /> - <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script> - <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' type='text/javascript'></script> - <script type="text/javascript"> - SyntaxHighlighter.defaults['toolbar'] = false; - SyntaxHighlighter.all(); - </script> <script type="text/javascript" language="javascript"> var hide = null; var show = null; @@ -141,18 +127,16 @@ under the License. <div class="wiki-content"> <div id="ConfluenceContent"><p>Pure JavaScript client side validation is the simplest but least feature-rich type of <a shape="rect" href="client-side-validation.html">Client Side Validation</a>. This type of validation uses 100% client-side JavaScript code to try to validate the values entered by the user. Because the validation logic is actually repeated in the JavaScript code, it is important to understand that some values will be considered acceptable by the JavaScript code but will be marked as unacceptable by the server-side <a shape="rect" href="validation.html">Validation</a>.</p> -<p>Only the following validators are supported:</p> -<ul><li>required validator</li><li>requiredstring validator</li><li>stringlength validator</li><li>regex validator</li><li>email validator</li><li>url validator</li><li>int validator</li><li>double validator</li></ul> - +<plain-text-body>{snippet:id=supported-validators|url=struts2/core/src/main/resources/template/xhtml/form-close-validate.ftl}</plain-text-body> -<div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> -<p>JavaScript client validation is not available for visitor validations.</p></div></div> +<rich-text-body> +<p>JavaScript client validation is not available for visitor validations.</p></rich-text-body> <h2 id="PureJavaScriptClientSideValidation-Errorreporting">Error reporting</h2> <p>Because client side validation does not talk to the server, the theme (<a shape="rect" href="xhtml-theme.html">xhtml theme</a> or <a shape="rect" href="cssxhtml-theme.html">css_xhtml theme</a>) is responsible for properly manipulating the HTML DOM to display the error message inline. The JavaScript that is responsible for doing this logic is <code>validation.js</code> and can be found in each theme.</p> -<div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Errors are reported using the default validation message, not the internationalized version that the server-side might be aware of. This is a known issue. You may want to try the <a shape="rect" href="ajax-client-side-validation.html">AJAX Client Side Validation</a> for messages that are fully internationalized.</p></div></div> +<rich-text-body><p>Errors are reported using the default validation message, not the internationalized version that the server-side might be aware of. This is a known issue. You may want to try the <a shape="rect" href="ajax-client-side-validation.html">AJAX Client Side Validation</a> for messages that are fully internationalized.</p></rich-text-body> <h2 id="PureJavaScriptClientSideValidation-AdditionalValidatorSupport">Additional Validator Support</h2> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/push.html ---------------------------------------------------------------------- diff --git a/content/docs/push.html b/content/docs/push.html index 6299c93..c9ec667 100644 --- a/content/docs/push.html +++ b/content/docs/push.html @@ -152,7 +152,7 @@ under the License. <h1 id="push-Examples">Examples</h1> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:push value="user"> <s:propery value="firstName" /> <s:propery value="lastName" /> @@ -160,13 +160,13 @@ under the License. ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: plain; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ Pushed user into the stack, and hence property tag could access user's properties (firstName, lastName etc) since user is now at the top of the stack ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:push value="myObject"> ----- (1) <s:bean name="jp.SomeBean" var="myBean"/> ----- (2) <s:param name="myParam" value="top"/> ----- (3) @@ -175,14 +175,14 @@ Pushed user into the stack, and hence property tag could access user's prope ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: plain; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ when in (1), myObject is at the top of the stack when in (2), jp.SomeBean is in the top of stack, also in stack's context with key myBean when in (3), top will get the jp.SomeBean instance ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:push value="myObject"> ---(A) <s:bean name="jp.SomeBean" var="myBean"/> ---(B) <s:param name="myParam" value="top.mySomeOtherValue"/> ---(C) @@ -191,14 +191,14 @@ when in (3), top will get the jp.SomeBean instance ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: plain; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ when in (A), myObject is at the top of the stack when in (B), jp.SomeBean is at the top of the stack, also in context with key myBean when in (C), top refers to jp.SomeBean instance. so top.mySomeOtherValue would invoke SomeBean's mySomeOtherValue() method ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:push value="myObject"> ---- (i) <s:bean name="jp.SomeBean" var="myBean"/> ---- (ii) <s:param name="myParam" value="[1].top"/> -----(iii) @@ -207,7 +207,7 @@ when in (C), top refers to jp.SomeBean instance. so top.mySomeOtherValue would i ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: plain; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ when in (i), myObject is at the top of the stack when in (ii), jp.SomeBean is at the top of the stack, followed by myObject when in (iii), [1].top will returned top of the cut of stack starting from myObject, namely myObject itself http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/radio.html ---------------------------------------------------------------------- diff --git a/content/docs/radio.html b/content/docs/radio.html index bb9a536..1d05e76 100644 --- a/content/docs/radio.html +++ b/content/docs/radio.html @@ -163,13 +163,13 @@ see the section select tag. The default selected one will be determined (in this in the action class which should return a value similar to the key of the getGenders() map if that particular gender is to be selected.</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:action name="GenderMap" var="genders"/> <s:radio label="Gender" name="male" list="#genders.genders"/> ]]></script> </div></div> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <@s.radio name="car" list={"ford": "Ford Motor Co", "toyota": "Toyota"} listKey="key" listValue="value" /> ]]></script> </div></div></div> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/redirect-action-result.html ---------------------------------------------------------------------- diff --git a/content/docs/redirect-action-result.html b/content/docs/redirect-action-result.html index 430f75e..e0bb655 100644 --- a/content/docs/redirect-action-result.html +++ b/content/docs/redirect-action-result.html @@ -164,7 +164,7 @@ URL.</li><li><b>parse</b> - Boolean, true by default. If set to false, the acti param will not be parsed for Ognl expressions.</li><li><b>anchor</b> - Optional. Also known as "fragment" or colloquially as "hash". You can specify an anchor for a result.</li></ul> <h1 id="RedirectActionResult-Examples">Examples</h1><p></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <package name="public" extends="struts-default"> <action name="login" class="..."> <!-- Redirect to another namespace --> @@ -210,7 +210,7 @@ param will not be parsed for Ognl expressions.</li><li><b>anchor</b> - Optional. ]]></script> </div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><!-- +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><!-- Example of "anchor" param usage in conjunction with "redirectAction" result-type. Generated URL: /displayReport.action#SUMMARY http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/redirect-result.html ---------------------------------------------------------------------- diff --git a/content/docs/redirect-result.html b/content/docs/redirect-result.html index 22f1915..5fe20ec 100644 --- a/content/docs/redirect-result.html +++ b/content/docs/redirect-result.html @@ -157,7 +157,7 @@ not be parsed for Ognl expressions.</li></ul><p></p><ul><li><b>anchor</b> - Opti This result follows the same rules from StrutsResultSupport. </p> <h1 id="RedirectResult-Examples">Examples</h1><p></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <!-- The redirect URL generated will be: /foo.jsp#FRAGMENT @@ -169,7 +169,7 @@ This result follows the same rules from StrutsResultSupport. </result> ]]></script> </div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"><package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters"> <-- Pass parameters (reportType, width and height) --> <!-- The redirect url generated will be - the namespace of current acction will be appended as location doesn't start with "/": http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/regex-validator.html ---------------------------------------------------------------------- diff --git a/content/docs/regex-validator.html b/content/docs/regex-validator.html index f2b18e2..e93b780 100644 --- a/content/docs/regex-validator.html +++ b/content/docs/regex-validator.html @@ -156,7 +156,7 @@ Do not use ${regexExpression}, ${caseSensitiveExpression} and ${trimExpression} <h1 id="regexvalidator-Examples">Examples</h1> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <validators> <!-- Plain Validator Syntax --> <validator type="regex"> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/regexfieldvalidator-annotation.html ---------------------------------------------------------------------- diff --git a/content/docs/regexfieldvalidator-annotation.html b/content/docs/regexfieldvalidator-annotation.html index db00270..2a74afc 100644 --- a/content/docs/regexfieldvalidator-annotation.html +++ b/content/docs/regexfieldvalidator-annotation.html @@ -152,7 +152,7 @@ under the License. <h2 id="RegexFieldValidatorAnnotation-Examples">Examples</h2> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: java; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ @RegexFieldValidator( key = "regex.field", regex = "yourregexp") ]]></script> </div></div></div> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/required-validator.html ---------------------------------------------------------------------- diff --git a/content/docs/required-validator.html b/content/docs/required-validator.html index 2e042b8..0266f6d 100644 --- a/content/docs/required-validator.html +++ b/content/docs/required-validator.html @@ -149,7 +149,7 @@ under the License. <h1 id="requiredvalidator-Examples">Examples</h1> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <validators> <!-- Plain Validator Syntax --> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/requiredfieldvalidator-annotation.html ---------------------------------------------------------------------- diff --git a/content/docs/requiredfieldvalidator-annotation.html b/content/docs/requiredfieldvalidator-annotation.html index 3383b86..2dea151 100644 --- a/content/docs/requiredfieldvalidator-annotation.html +++ b/content/docs/requiredfieldvalidator-annotation.html @@ -152,7 +152,7 @@ under the License. <h2 id="RequiredFieldValidatorAnnotation-Examples">Examples</h2> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: java; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ @RequiredFieldValidator(message = "Default message", key = "i18n.key", shortCircuit = true) ]]></script> </div></div></div> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/requiredstring-validator.html ---------------------------------------------------------------------- diff --git a/content/docs/requiredstring-validator.html b/content/docs/requiredstring-validator.html index 6949e95..78c90c9 100644 --- a/content/docs/requiredstring-validator.html +++ b/content/docs/requiredstring-validator.html @@ -150,7 +150,7 @@ the String before performing the length check. If unspecified, the String will <h1 id="requiredstringvalidator-Examples">Examples</h1> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <validators> <!-- Plain-Validator Syntax --> <validator type="requiredstring"> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/requiredstringvalidator-annotation.html ---------------------------------------------------------------------- diff --git a/content/docs/requiredstringvalidator-annotation.html b/content/docs/requiredstringvalidator-annotation.html index 6c74212..13dc711 100644 --- a/content/docs/requiredstringvalidator-annotation.html +++ b/content/docs/requiredstringvalidator-annotation.html @@ -152,7 +152,7 @@ under the License. <h2 id="RequiredStringValidatorAnnotation-Examples">Examples</h2> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: java; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ @RequiredStringValidator(message = "Default message", key = "i18n.key", shortCircuit = true, trim = true) ]]></script> </div></div></div> http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/reset.html ---------------------------------------------------------------------- diff --git a/content/docs/reset.html b/content/docs/reset.html index 4c5e91a..ebdbe17 100644 --- a/content/docs/reset.html +++ b/content/docs/reset.html @@ -160,7 +160,7 @@ text shown on the button face, but has issues with Microsoft Internet Explorer a <h3 id="reset-Example1">Example 1</h3> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ <s:reset value="Reset" /> ]]></script> </div></div> @@ -168,7 +168,7 @@ text shown on the button face, but has issues with Microsoft Internet Explorer a <h3 id="reset-Example2">Example 2</h3> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<script class="brush: xml; gutter: false; theme: Confluence" type="syntaxhighlighter"><![CDATA[ Render a reset button: <s:reset type="button" key="reset"/> ]]></script>