java - 使用 Struts2 约定插件,但从 URL 中的命名空间参数获取 NULL 值
问题描述
我创建了一个测试,我想通过带有“.../{token}/def”的操作 URL 获取令牌值。但是,为什么我成功进入action的时候action方法中的getToken却是print null。
有人可以给我一些建议吗?
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 设置
以下是关于测试的 sturts.xml 设置。
<?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 测试示例
这是一个 URL 测试示例,我想从这个 URL 中获取“abc”值,然后在 Java 中从 getToken 中获取值。
http://127.0.0.1:8080/Ota2Abstract/testAction/abc/def
解决方案
推荐阅读
- html - 覆盖我的 CSS 垂直手风琴部分的宽度
- php - 在作曲家更新后调用未定义的方法 MongoDB\Driver\ReadConcern::isDefault()
- javascript - 在节点 JS 中自定义地图输出
- encryption - 在 TPM 中打开密封对象时会发生什么情况?
- javascript - 结合 mssql 查询的结果
- javascript - 如果页面脱机,如何从服务人员获得对索引 js 的响应
- sql - PetaPoco {“'@0' 附近的语法不正确。”} CTE
- c# - 我们可以在 .NET 中安全地执行核心亲和力吗?
- ruby - 如何通过 Twitter API https://api.twitter.com/1.1/direct_messages/events/new.json 发送新的直接消息?
- html - 在中间对齐字体真棒图标