加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在Struts 2动作重定向中拥有动态参数名称?

发布时间:2020-12-15 02:24:49 所属栏目:Java 来源:网络整理
导读:所以我正在尝试创建一个具有动态参数名称和值的动作重定向.我理解如何在struts.xml文件中为参数值执行此操作,但似乎无法正确评估参数名称的内容. action name="SaveObject" method="save" class="com.mysite.actions.ObjectAction" result name="success" ty
所以我正在尝试创建一个具有动态参数名称和值的动作重定向.我理解如何在struts.xml文件中为参数值执行此操作,但似乎无法正确评估参数名称的内容.

<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和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>

在LoginAction.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;
}
 }

给网址

http://localhost:8080/ProjectName/home.action?id=1

现在在HomeAction.java中

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;
}
}

<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>

在Home.jsp中

<%@ 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读