在将应用程序从Struts 1迁移到Struts 2时
在某些地方,基于请求参数,同一操作类已用于不同类型的视图。
例如:如果createType
is为1意味着需要附加一个参数,或者如果createType
is
2意味着需要附加更多额外的参数,例如,我需要使用将动态参数传递给其他操作ActionForward
。
struts-config.xml
<action path="/CommonAction" type="com.example.CommonAction" scope="request">
<forward name="viewAction" path = "/ViewAction.do"/>
</action>
动作班
public class CreateAction extends Action
{
public ActionForward execute(ActionMapping m, ActionForm f, HttpServletRequest req, HttpServletResponse res) throws ServletException, Exception
{
String actionPath = m.findForward("viewAction").getPath();
String createType = req.getParameter("createType");
String params = "&action=view";
if("1".equals(createType)){
params = params + "&from=list";
}else if("2".equals(createType)){
params = params + "&from=detail&someParam=someValue";
}//,etc..
String actionUrl = actionPath+"?"+params;
return new ActionForward(actionUrl);
}
}
但是,我无法在Struts 2中做同样的事情。在Struts 2中ActionForward
,动态参数可以使用吗?
您可以将动态参数与一起使用result
,请参见动态结果配置。
在操作中,您应该为参数表编写吸气剂
private String actionUrl;
public String getActionUrl() {
return actionUrl;
}
并配置结果
<action name="create" class="CreateAction">
<result type="redirect">${actionUrl}</result>
</action>
因此,常识是将代码重写为
public class CreateAction extends ActionSupport
{
private String actionUrl;
public String getActionUrl() {
return actionUrl;
}
@Override
public String execute() throws Exception
{
String actionPath = "/view";
String createType = req.getParameter("createType");
String params = "&action=view";
if("1".equals(createType)){
params = params + "&from=list";
}else if("2".equals(createType)){
params = params + "&from=detail&someParam=someValue";
}//,etc..
actionUrl = actionPath+"?"+params;
return SUCCESS;
}
}
如果您需要一种更好的方法来从操作映射中创建URL,则可以查看此答案。
问题内容: 我有这个规格 使用此页面定义 我需要像上面一样动态配置属性:SEE 问题答案: 据我所知,这并不存在。该批注采用静态而已。您可能需要自定义修改注释处理器,类似于此博客的行为:https ://web.archive.org/web/20180612042724/http: //brimllc.com/2011/01/selenium-2-0-webdriver-扩展查找以支持动态idx
问题内容: 我正在使用Spring,Spring Data JPA,Spring Security,Primefaces的项目中工作… 在本教程中,你只能在预定义的数据源之间实现动态数据源切换。 这是我的代码的片段: springContext-jpa.xml 我想做的就是使targetDataSources映射也与其元素一样动态。 换句话说,我想获取某个数据库表,使用存储在该表中的属性创建我的数
我在一个使用Spring、Spring数据JPA、Spring Security、Primefaces的项目中工作。。。 我正在学习关于spring动态数据源路由的教程。 在本教程中,您只能在预定义的数据源之间实现动态数据源切换。 以下是我的代码片段: springContext jpa。xml 我想做的是使targetDataSources映射与它的元素一样动态。 换句话说,我想获取一个特定的数
问题内容: 对于我的学校项目,我正在创建一款类似iPhone坏苹果的游戏(不是我个人的选择,但这不是问题)。 游戏需要有两个版本,第一个版本在控制台中,第二个版本在JavaFX中。但我想进一步说明这一点。我想添加用户在启动游戏时可以添加到终端的参数,例如 java -jar BadApplesClone.jar –height = 10 –width = 10 –numPieces = 5 然后,
问题内容: 我正在尝试使用动态变量名称(我不确定它们的实际名称),但是非常像这样: 返回值告诉我它不起作用。我不知道我在寻找什么语法或技术,这使得很难研究。在前面定义。 问题答案: 将它们包装在: 工作实例 使用是创建动态变量的一种方法,简单的示例:
问题内容: 我刚刚开始学习Java流,并遇到了问题。请看下面的例子。这是Node类的一部分: 我的意图是在流中的每个节点上使用名称和结果参数调用#findChildren。我尝试使用方法引用Node :: findChildren时没有运气。我将不胜感激的解决方案与运营商。 是否可以将方法引用与参数一起使用?我喜欢流的想法,我只想使代码更具可读性。 实际上,我认为还有一个类似的问题,方法引用具有读