【问题标题】:In JSP, how to pass ArrayList using anchor tag?在 JSP 中,如何使用锚标记传递 ArrayList?
【发布时间】:2011-03-29 16:57:45
【问题描述】:

我是 JSP 的新手。 我所能做的就是从另一个网页的表单标签接收数据。 我不知道任何 MCV(MVC?),也不知道自定义标签、会话、cookie 或任何比这更深的东西。

我只需要使用锚标记将 ArrayList 传递给另一个动态生成的 JSP 页面。 这是规格。

基本上我有一个二维 ArrayList。 第一个维度被迭代并列在第一个 JSP 页面中。

所以第一个 JSP 页面应该是这样的:


这是 ArrayList1。大小为 23。

这是 ArrayList2。尺寸为 19。

这是 ArrayList3。大小为 12。

..

..

..

这是 ArrayList(n)。大小为 1。


每一行都是一个锚标签,当用户点击它时, 对应的 ArrayList 被传递到第二个 JSP 页面。

第二个 JSP 页面,它所做的只是接收一个 ArrayList 并遍历它并列出其中的数据。 所以只需要一个“第二个 JSP 页面”,因为它一次只能接收一个 ArrayList。它只需要是动态的。

我知道如何在 JSP 页面中遍历 ArrayList。 我不知道的是如何使用锚标记将 ArrayLists 传递到另一个 JSP 页面。

欢迎任何提示或方法。我自己做了一些搜索,但所有的 cmets 对我来说都太高级了。我会很感激任何帮助。谢谢。

【问题讨论】:

    标签: jsp object tags anchor


    【解决方案1】:

    我认为你不应该这样做。相反,您可以执行以下方式。它更容易,更有可能。

    想法: - 将所有数组列表设置为

    request.setAttribute("arraylist1",Arraylist1);
    request.setAttribute("arraylist2",Arraylist2);
    .....
    

    - 在每个锚标签中,你放置一个 id 来识别哪个链接被点击

    (e.g. <a href="b.jsp?id=arraylist1">your link </a>)  
    

    -在b.jsp中,获取这行代码的id参数

    String selectedLink = request.getParameter("id")
    
    • 如果 selectedLink = arraylist1 进行比较
    • List selectedArray = (List)request.getAttribute(selectedLink);

    希望对你有用

    内森潘

    【讨论】:

    • 感谢您的回复!!我尝试了类似于您的答案的方法。我将每个 ArrayList 的 Key 传递给另一个 JSP 页面。在第二个 JSP 页面中,我再次从 MySQL 中调用了相应的 ArrayList。我不知道这是否是节省时间的最佳方案,但对我来说很简单:)
    • 哦,我在 30 秒前编辑了我的回复。巧合:) 我希望我的第一条评论是对您问题的回答。
    • 抱歉耽误了“接受过程”。我不知道我可以“接受”。对SO系统不是很熟悉。
    【解决方案2】:
    1. 您可能不想这样做。
    2. 如果你真的想这样做,那么
    3. 这不是真正的 JSP 相关问题,而是 HTTP 相关问题
    4. 您可以将数组中的内容用逗号连接起来,并将整个字符串作为查询字符串组件附加到 url 中。

    示例:

    在 a.jsp 你有一个链接:

    b.jsp?array=1,2,3,4,5
    

    在 b.jsp 中,你解释数组字符串并得到一个数组列表:

    [1,2,3,4,5]

    【讨论】:

    • 感谢您的回复。但你为什么建议“我可能不想这样做”?我的架构是个坏主意吗?而且,我不能只在查询字符串中附加一个 ArrayList 吗?
    • 只是看起来有点奇怪,如果数组中的数据不是很大,那可能没问题,如果数据很大,您可能想将数据存储在服务器端并通过从页面到页面的数组键。将“ArrayList”附加到 似乎并不简单,http 不知道“ArrayList”。
    • 在服务器端存储数据似乎是一个更好的主意!!我不知道该怎么做……这需要会话控制吗?二维 ArrayList 是根据用户的请求动态生成的,所以我不能预先存储所有的 ArrayList。老实说,我不知道如何在服务器端存储任何东西。我只知道 doGet() 和 request.getParameter() (我完全是新手)
    • 如果是用户生成的,则不能预先存储在服务器端。然后你必须把它放在查询字符串(对于GET)或请求正文(对于POST)中,然后在服务器端你自己解释它,就像我在答案中所说的那样。
    • 我不确定我们是否在同一页面上。用户向服务器请求特定数据,服务器以二维 ArrayList 的形式返回数据。在这种情况下,我还必须使用查询字符串还是请求正文?
    猜你喜欢
    • 2013-06-10
    • 2011-11-27
    • 2022-08-15
    • 1970-01-01
    • 2010-09-09
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多