I create a test which is I want to get the token value through Action URL with ".../{token}/def". However, why the getToken in the action method was print null when I successfully entered the action.
Could somebody give me some advice?
testAction.java
package tw.com.test.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.opensymphony.xwork2.ActionSupport;
@Controller
@ParentPackage("ota2-default")
@Scope("prototype")
@Namespace("/testAction")
@InterceptorRef("modifiedDefaultStack")
public class TestAction extends ActionSupport{
private String token;
@Action(value="{token}/def", results={@Result(name=SUCCESS, type="redirect", location="test.htm")})
public String test2() throws Exception {
System.out.println(getToken());
return SUCCESS;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
Struts.xml setting
The following is a sturts.xml setting on the test.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.locale" value="zh_TW" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.convention.classes.reload" value="true" />
<!-- constant name="struts.convention.package.locators" value="com.caves"/-->
<constant name="struts.convention.action.packages" value="action"/>
<constant name="struts.convention.result.path" value="/WEB-INF/pages/"/>
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.default.parent.package" value="ota2-default"/>
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
<constant name="struts.custom.i18n.resources" value="package"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex"/> <!-- see http://struts.apache.org/release/2.3.x/docs/wildcard-mappings.html -->
<package name="ota2-default" extends="struts-default">
<interceptors>
<interceptor-stack name="component">
<interceptor-ref name="exception"/>
<interceptor-ref name="prepare"/>
</interceptor-stack>
<interceptor-stack name="modifiedDefaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">^action:.*,^method:.*</param>
<param name="paramNameMaxLength">600</param>
</interceptor-ref>
<interceptor-ref name="prepare"/>
<interceptor-ref name="conversionError"/>
<!-- <interceptor-ref name="json"/> -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="debugging"/>
</interceptor-stack>
<interceptor-stack name="noneStack">
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
</interceptor-stack>
</interceptors>
</package>
</struts>
URL Testing Examples
This is an URL test example, I want to get the "abc" value from this URL, and then get the value from getToken in Java.
http://127.0.0.1:8080/Ota2Abstract/testAction/abc/def