Java 如何根据Struts 2中的submit按钮将用户重定向到不同的页面

Java 如何根据Struts 2中的submit按钮将用户重定向到不同的页面,java,jsp,struts2,actionresult,post-redirect-get,Java,Jsp,Struts2,Actionresult,Post Redirect Get,首先,请注意,我知道以下代码不在JavaScript或jQuery中,但我只是将它们添加为这个问题的标记,希望通过JavaScript或jQuery找到解决方案。 我有一个有三个提交按钮的表单。问题是,当我使用其中一个按钮提交表单时,结果页将发送到同一地址。我需要它在不同的地址 目的: List <Integer> products = new ArrayList(); <result name="updateProducts" type=&

首先,请注意,我知道以下代码不在JavaScript或jQuery中,但我只是将它们添加为这个问题的标记,希望通过JavaScript或jQuery找到解决方案。

我有一个有三个提交按钮的表单。问题是,当我使用其中一个按钮提交表单时,结果页将发送到同一地址。我需要它在不同的地址

目的:

List <Integer> products = new ArrayList();
   
   <result name="updateProducts" type="redirectAction">
            <param name="actionName">update</param>
            <param name="namespace">/products/Update</param>
            <param name="products">${products}</param>
            <param name="id">${id}</param>
   </result>
代码应该在名为view的页面中显示特定类别的项目列表。用户选择几个项目并提交表单。服务器需要在名为“更新”的页面中显示所选项目的详细信息(单独的地址和查看页面)。然后,用户可以编辑项目的详细信息,并提交表单以更新这些项目的详细信息

要求:

List <Integer> products = new ArrayList();
   
   <result name="updateProducts" type="redirectAction">
            <param name="actionName">update</param>
            <param name="namespace">/products/Update</param>
            <param name="products">${products}</param>
            <param name="id">${id}</param>
   </result>
假设地址是

myexample.com/Product/view      //shows view page
单击编辑后,它应该重定向到以下地址

myexample.com/Product/update     //shows update page ( show details of selected products)
潜在解决方案:

List <Integer> products = new ArrayList();
   
   <result name="updateProducts" type="redirectAction">
            <param name="actionName">update</param>
            <param name="namespace">/products/Update</param>
            <param name="products">${products}</param>
            <param name="id">${id}</param>
   </result>
根据Roman C的回答,在收到请求后,我将产品列表传递给另一个操作以显示更新页面,但它在地址上显示如下:;因此,更新页面不将products参数识别为列表

...products=[1%2C+2]&id=1
Java:

List <Integer> products = new ArrayList();
   
   <result name="updateProducts" type="redirectAction">
            <param name="actionName">update</param>
            <param name="namespace">/products/Update</param>
            <param name="products">${products}</param>
            <param name="id">${id}</param>
   </result>

您应该将
redirectAction
结果添加到处理提交请求的操作的操作配置中。在您的例子中,它有一个
edit
名称,这很容易混淆,应该是
save
update
这样的名称,因为当您为它命名
edit
时,许多程序员认为您是在请求填充一些文本字段。但事实并非如此,您的
edit
操作不会填充,而是提交给服务器。提交后,如果您不想在重定向后停留在页面上,则应遵循并将
重定向操作
重定向
结果返回到其他操作或不需要查看的URL或
编辑
操作。删除编辑操作配置,因为它已被通配符映射覆盖。添加保存按钮

<s:submit id="saveBtn" action="save" value="Save"/>
如何根据按下的表单提交按钮将用户重定向到不同页面: URL重定向是一种万维网技术,用于使网页在多个
URL地址下可用。当web浏览器尝试打开已重定向的URL时,将打开具有不同URL的页面

For example, www.example.com is redirected to example.iana.org. 
类似地,
域重定向
域转发
是指将URL域中的所有页面重定向到另一个域,就像
wikipedia.com
wikipedia.net
自动重定向到
wikipedia.org
一样

URL重定向可用于URL缩短、在移动网页时防止断开链接、允许属于同一所有者的多个域名引用单个网站、引导网站的导航进出、隐私保护以及网络钓鱼攻击等无害目的

<form action="http://example.org/ jmail1.java">
<input type="submit" value="Go To jmail1.java">
</form>

<form action="http://example.org/jmail2.java">
<input type="submit" value="Go To jmail2.java">
</form>
尽管Info path使您能够在提交后创建自定义消息,但许多用户要求的不仅仅是这些。他们不满意表格让你坐在列表中的方式,这可能会让人困惑。因此,我们有一种方法,您可以使InfoPath表单像传统的web表单一样发挥功能,在其中填写表单,然后单击“提交”按钮,用户将进入感谢页面

分辨率:

List <Integer> products = new ArrayList();
   
   <result name="updateProducts" type="redirectAction">
            <param name="actionName">update</param>
            <param name="namespace">/products/Update</param>
            <param name="products">${products}</param>
            <param name="id">${id}</param>
   </result>
  • 创建一个感谢页面并将其保存在网站上的某个位置。我们建议使用任何编辑器(如记事本或SharePoint Designer)创建html页面,其中包含您选择的消息,如“感谢您的提交”

  • 单击该感谢页面并记录URL,即,它将如下所示:

  • 现在,您需要确定InfoPath表单的URL。单击它并记录URL,或者如果您已将InfoPath表单附加到SharePoint列表,则需要如下更改URL:,如您所见,我们刚刚在其末尾添加了NewForm.aspx


  • 获取您在步骤3中记录的URL并添加以下内容:?
    Source=,因此URL应如下所示:请参阅。我想,这意味着当请求发出时,后端应接收来自myAction的请求,并将用户重定向到myAction的单独地址。@RomanC yes这是正确的。J888是完全正确的。@developerJK的问题是updatedFrameworks很棒,如果你不是每10分钟就被一个新的“如何在这个框架中做那个简单的事情”的问题所困扰的话。没有理由在适当的时候避免会议。如果请求更合适,请使用请求属性而不是会话。但显然,在某些情况下,会话是合适的,比如在用户登录时存储用户名,这样从那时起,您就知道该用户是谁了。好的,谢谢,请注意,将在查看页面中选择项目,并且所选项目的详细信息将显示在要更新的更新页面上;因此,在这种情况下,我需要将所选项目的列表或包含所有项目的对象发送到新操作,因为第二个操作应该显示要编辑的所选项目的详细信息,对吗?正如我从PRG获得的,这是为了避免重复。我的代码应该在名为view的页面中显示特定类别的项目列表。用户选择几个项目并提交表单。服务器需要在名为“更新”的新页面中显示所选项目的详细信息(单独的地址和查看页面)。然后,用户可以编辑项目的详细信息,并提交表单以更新这些项目的详细信息。不仅重复,当您重定向到新地址/其他地址时,请求将被清除,并且您乐于再次使用数据填充,而不是重复