Java 如何根据Struts 2中的submit按钮将用户重定向到不同的页面
首先,请注意,我知道以下代码不在JavaScript或jQuery中,但我只是将它们添加为这个问题的标记,希望通过JavaScript或jQuery找到解决方案。 我有一个有三个提交按钮的表单。问题是,当我使用其中一个按钮提交表单时,结果页将发送到同一地址。我需要它在不同的地址 目的: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=&
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的页面中显示特定类别的项目列表。用户选择几个项目并提交表单。服务器需要在名为“更新”的新页面中显示所选项目的详细信息(单独的地址和查看页面)。然后,用户可以编辑项目的详细信息,并提交表单以更新这些项目的详细信息。不仅重复,当您重定向到新地址/其他地址时,请求将被清除,并且您乐于再次使用数据填充,而不是重复