Java 如何在Struts 2操作重定向中使用动态参数名称?
所以我尝试创建一个动作重定向,它有动态参数名和值。我知道如何在struts.xml文件中为参数值执行此操作,但似乎无法正确计算参数名Java 如何在Struts 2操作重定向中使用动态参数名称?,java,struts2,ognl,Java,Struts2,Ognl,所以我尝试创建一个动作重定向,它有动态参数名和值。我知道如何在struts.xml文件中为参数值执行此操作,但似乎无法正确计算参数名 <action name="SaveObject" method="save" class="com.mysite.actions.ObjectAction"> <result name="success" type="redirectAction"> <param na
<action name="SaveObject" method="save"
class="com.mysite.actions.ObjectAction">
<result name="success" type="redirectAction">
<param name="actionName">${actionName}</param>
<param name="${paramName}">${paramValue}</param>
</result>
</action>
${actionName}
${paramValue}
现在${actionName}和${paramValue}我完全没有问题。actionName、paramValue和paramName在ObjectAction中都有适当命名的getter/setter
有人知道如何正确计算${paramName}吗?它当前在URL中显示为“${paramName}”,我需要它是paramName变量的值。由于对OGNL的误解,我尝试使用#paramName和%{paramName},它们在URL中的显示也不正确。我还尝试添加了parse=true参数,但我相信Struts 2无论如何都是默认的
<action name="login" class="com.common.LoginAction" >
<result name="success" type="redirectAction">
<param name="actionName">${actionName}</param>
<param name="${paramName}">${paramValue}</param>
</result>
</action>
提供url
http://localhost:8080/ProjectName/home.action?id=1
现在在HomeAction.java中
package com.common;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = -1449554101273745861L;
private String paramName;
private String actionName;
private String paramValue;
public String execute(){
paramName="id";
setParamValue("1");
setActionName("home");
return SUCCESS;
}
public void setParamName(String paramName) {
this.paramName = paramName;
}
public String getParamName() {
return paramName;
}
public void setParamValue(String paramValue) {
this.paramValue = paramValue;
}
public String getParamValue() {
return paramValue;
}
public void setActionName(String actionName) {
this.actionName = actionName;
}
public String getActionName() {
return actionName;
}
}
package com.common;
import com.opensymphony.xwork2.ActionSupport;
public class HomeAction extends ActionSupport{
private static final long serialVersionUID = -127700165200747324L;
private int id;
public String execute(){
return SUCCESS;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
}
及
检查这个问题,也许它会帮助你是的,我在发布我自己的问题之前发现了这个问题。如果你看一下所谓的效果,它基本上和我写的是一样的,但我的似乎没有正确评估。谢谢你!这似乎有点奇怪,因为这应该可以工作。请检查您的paramName是否不应该为空,也不应该为空。它不是空的。事实上,在结果中放置一个
${paramName}
表明,当paramName用作值时,它在URL中的计算结果是正确的,但当它用作名称时,仍然是错误的。这很奇怪。真奇怪,就连我现在也不知所措。。
<action name="home" class="com.common.HomeAction" >
<result name="success">Home.jsp</result>
<result name="error">index.jsp</result>
<result name="input">index.jsp</result>
</action>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
id=${id}<br/>
id=1