当前位置: 首页 > 面试题库 >

Struts2重定向到参数数量未知的另一个动作

令狐运珧
2023-03-14
问题内容

我有一个登录操作,成功执行后,该操作将重定向到上一页(我将上一页存储在会话中,以便以后再获取)。在Struts2中,我可以找到两种方法来进行这种重定向:

    <action name="login" class="com.myapp.login.Login">
        <result name="redirect" type="redirect">${previousAction.requestURL}</result>   
    </action>

在此示例中,将调用getPreviousAction()。getRequestURL()方法(这是一个自制方法,它对struts2无效),并且将按预期返回上一页的url,例如:

somenamespace/index.action

还有另一种重定向:

<action name="login" class="com.myapp.login.Login">
     <result type="redirectAction">
        <param name="actionName">${previousAction.name}</param>
        <param name="namespace">/${previousAction.namespace}</param>
    </result>   
</action>

我想使用这种redirectaction结果类型,因为它更干净。但是,当查询参数是网址的一部分时,我遇到了问题。例如:

somenamespace/index.action?name=john&age=50

我知道我可以在struts.xml中添加硬编码的这些参数,但是问题是我的登录操作应该重定向到任何先前调用的操作,而且我不预先知道先前操作具有哪些查询参数。这与典型的用例不同,在典型的用例中,您确切知道要重定向到的操作

我发现一个非常糟糕的解决方案是添加所有可能的参数(struts.xml中所有操作的所有参数的集合),然后使用以下选项:

<param name="suppressEmptyParameters">true</param>

问题答案:

您可以从中保存操作名称,名称空间和参数ActionMapping

ActionMapping mapping = ServletActionContext.getActionMapping();

您还可以保存查询字符串而不是参数映射。

String params = request.getQueryString();

要动态添加参数以redirectAction得出结果,应在动态参数中使用OGNL。

<param name="actionName">${previousAction.name +'?'+ parameters}</param>

假设您有一个getter parameters并从保存了先前查询字符串,操作名称和名称空间的会话中对其进行了初始化。



 类似资料:
  • 问题内容: 我为我的一个struts2映射文件成功地使用了重定向操作,如下所示: 这是我想要做的: 换句话说,我希望传递的参数名称是动态的。有人知道这是否可能吗? 问题答案: 实际上,这是行不通的。但是,我能够做到以下几点: 我只是以为那是行不通的。

  • 转到http://localhost:8080的结果是重定向:/birdspotting的打印

  • 问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通

  • 我试图在我的spring应用程序中使用OAuth2。 下面是我的pom.xml 在 这里怎么了?我错过了什么?

  • 问题内容: 我正在尝试使用Struts2实现以下目标 这就是我在做什么: 为什么以上内容不能重定向为以下任何建议: 问题答案: 到目前为止,对我有用的解决方案是 在操作中定义味精的设置者和获取者的位置

  • 问题内容: 这个问题已经在这里有了答案 : 有没有办法将默认参数设置为等于另一个参数值? (4个答案) 5年前关闭。 是否可以在同一函数定义中将函数参数的默认值定义为另一个参数?就像是: 但这没用。 问题答案: 不可以。Python解释器认为要说法的默认值分配到一个全局变量时,没有一个全局变量。 您可能想要尝试这样的事情: