如何根据所按表单的提交按钮将用户重定向到不同的页面

时间:2014-03-28 02:29:15

标签: java jsp struts2 actionresult post-redirect-get

首先,请注意我知道以下代码不是JavaScript或jQuery,但我只是将它们添加为此问题的标签,希望使用Javascript或jQuery找到它的解决方案。

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

目的:代码应该在名为view的页面中显示特定类别的项目列表。用户选择几个项目并提交表格。服务器需要在名为update的页面中显示所选项目的详细信息(具有视图页面的单独地址)。然后,用户可以编辑项目的详细信息并提交表单以更新这些项目的详细信息。

要求

让我们说地址是

    myexample.com/Product/view      //shows view page

点击编辑后,它应该重定向到以下地址。

    myexample.com/Product/update     //shows update page ( show details of selected products)

潜在解决方案

根据Roman C的回答,收到请求后,我将产品列表传递给另一个动作以显示更新页面,但它在地址上显示如下;因此,更新页面不会将产品参数识别为列表。

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

爪哇

    List <Integer> products = new ArrayList();

Struts重定向

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

即使我手动发送以下请求,操作类也不会将products参数识别为列表。它显示它的大小为零。

     ...products=[1,2]&id=1

2 个答案:

答案 0 :(得分:3)

您应该将redirectAction结果添加到处理提交请求的操作的操作配置中。在您的情况下,它有一个edit名称,令人困惑,应该命名为saveupdate,因为当您命名edit时,许多程序员会认为您正在提出请求填充一些文本字段。但事实并非如此,您的edit操作不会填充,而不是提交到服务器。提交后,您应该关注Post-Redirect-Get pattern并将redirectActionredirect结果返回给viewedit行动的其他操作或网址。 #39; t想要在重定向后留在页面上。删除通配符映射所涵盖的编辑操作配置。添加保存按钮

<s:submit id="saveBtn" action="save" value="Save"/>

添加并返回save操作

的重定向操作结果
<action name="save" method="save" class="myexample.Product">
  <result type="redirectAction" name="list" />
</action>   

答案 1 :(得分:2)

如何根据所按表单的提交按钮将用户重定向到不同的页面:

网址重定向是一种万维网技术,用于使网页在多个URL address下可用。当Web浏览器尝试打开已重定向的URL时,将打开具有不同URL的页面。

For example, www.example.com is redirected to example.iana.org. 

同样,Domain redirectiondomain forwarding是指将网址域中的所有网页重定向到其他网域时,wikipedia.comwikipedia.net会自动重定向到{{ 1}}。

网址重定向可用于网址缩短,以防止移动网页时链接断开,允许属于同一所有者的wikipedia.org名称引用单个网站,以指导导入和导出一个网站,用于隐私保护,以及用于诸如网络钓鱼攻击之类的无害的目的。

multiple domain

<强>技术:

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

例如,无法控制标题的网络作者可能会使用刷新元标记,而重定向网站上所有网页的网络服务器管理员更有可能使用服务器配置。

Several different kinds of response to the browser will result in a redirection. 
These vary in whether they affect HTTP headers or HTML content. The techniques used typically depend on the role of the person implementing it and their access to different parts of the system.

虽然信息路径使您能够在提交后创建自定义消息,但许多用户已经请求了更多。他们对表格只是让你坐在列表中的方式感到不满意,这可能令人困惑。因此,我们有一种方法可以使InfoPath表单功能像传统的Web表单一样填写表单,单击“提交”按钮后,用户将被带到感谢页面

解决:

  1. 创建一个感谢页面并将其保存在您网站的某个位置。我们建议使用任何编辑器(如记事本或SharePoint Designer)创建一个带有您选择的消息的html页面,例如“感谢您的提交”

  2. 点击“谢谢”页面并记录网址I.E.,它看起来像这样:http://mydomain.com/sites/YourSite/YourDocLibrary/ThankYou.html

  3. 现在您需要确定InfoPath表单的URL。单击它并记录URL,或者如果已将InfoPath表单附加到SharePoint列表,则需要更改URL:http://mydomain.com/sites/YourSite/YourList/NewForm.aspx,因为您可以看到我们刚刚添加了NewForm.aspx结束了。

  4. <action name="foo"> <result type="redirectAction"> <param name="actionName">bar</param> <param name="namespace">/</param> </result> </action> 来源= http://mydomain.com/sites/YourSite/YourDocLibrary/ThankYou.html,因此网址应如下所示:http://mydomain.com/sites/YourSite/YourList/NewForm.aspx?Source=http://mydomain.com/sites/YourSite/YourDocLibrary/ThankYou.html&lt;&lt;这是您要发送给用户以填写表单的链接。当您的用户点击此新链接时,它会告诉SharePoint在提交后自动将其重定向到您的感谢页面。

  5. 在感谢页面上,您可以添加一个链接转到另一个页面,或者您可以获得真正的想象力并添加Meta刷新标记以自动将您的用户重定向到例如您网站的主页。你是怎样做的?简单。在HTML页面的代码之间添加以下行:Take the URL you recorded in step 3 and add the following:?。只是为了解释一下这条线,在这种情况下,数字2代表2秒。因此,您可以通过将该号码替换为另一个号码来修改该值以使用户在该页面上更长或更短。该网址将是您的主页或您要将用户重定向到的任何其他网站的网址。

  6. <meta http-equiv="refresh" content="2;url=http://mydomain.com/sites/yourSite/">

    
      <table><tr>
      <td><s:submit name="update" value="Update" action="update" ></s:submit></td>
      <td><s:submit name="delete" value="Delete" action="delete" ></s:submit></td>
      </tr></table>
    

    手动重定向:

    最简单的方法是让访问者按照指向新页面的链接,通常使用HTML锚点,如:

    <action name="update"
            class="net.viralpatel.struts2.action.MemberCrudOpertaions"
            method="updateUser">
            <result>members.jsp</result>
    </action>
    
    <action name="delete"
            class="net.viralpatel.struts2.action.MemberCrudOpertaions"
            method="deleteUser">
            <result>members.jsp</result>
    </action>`
    

    此方法通常用作后备 - 如果浏览器不支持自动重定向,则访问者仍可通过链接访问目标文档。

    默认重定向:

    默认重定向技术是要求访问者关注指向新页面的链接,通常使用带有JSP的HTML:

    Please follow <a href="http://www.example.com/">this link</a>.
    

    <强> http://struts.apache.org/release/2.2.x/docs/redirect-action-result.html

    <强> http://struts.apache.org/development/2.x/docs/multiple-submit-buttons.html

    <强> http://struts.apache.org/development/2.x/docs/submit.html

    <强> http://struts.apache.org/release/2.2.x/docs/interceptors.html

    相关来源:http://en.wikipedia.org/