【问题标题】:how to get data in jsp using jstl?如何使用jstl在jsp中获取数据?
【发布时间】:2011-10-30 13:22:52
【问题描述】:

目前我正在使用 scriptlet 在 jsp 中获取数据,但现在想使用 JSTL,因此我正在尝试将我的 scriptlet 代码转换为 JSTL。但是对于以下场景,我不知道如何在 jstl 中获取数据。

让我举例说明:

有3个对象

  1. 用户(user_id、用户名、密码)
  2. 盒子 (box_id, box_name,list_of_boxCat)
  3. BoxCat (box_cat_id,box_id,user_id,cat_name)

现在我需要显示用户拥有的框列表。因此,我通过在 servlet 中触发查询创建了一个 Box 对象列表,并在请求属性中的 jsp 中传递该列表,然后在 jsp 中访问它。直到这一切顺利。但是现在我必须直接访问没有来自 Box 对象的任何引用的 BoxCat 对象。要获得 BoxCat 对象,我必须将 Userid 和 Box id 结合起来,然后才能获得 BoxCat id。因此,在 scriptlet 中,我调用我的 DAO 并通过运行查询来获取列表。但我不知道如何做这个JSTL。任何人请帮助我如何做到这一点?

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    您应该重新设计或映射您的模型,使其适合您的视图需求。视图是否需要List<BoxCat> 作为User 的属性,或者BoxCat 作为Box 的属性?如果是这样,那么就这样做并更改您的控制器和 DAO 以预先填充它。

    否则,使用实体 ID 映射(例如 Map<Long, Entity>),您最终会遇到笨拙且可能内存效率低下的解决方法。

    【讨论】:

    • 映射如下:用户可以有多个 Box。 Box 可以有多个 BoxCat。只有一个 BoxCat 用于用户和盒子的独特组合。在 jsp 上,我有框列表,并且必须为登录用户显示与该框关联的 boxCat 名称。我该怎么做?
    • 在 scriptlet 中我运行这个查询:"select * from boxcat where box_id="+box.getId()+" and user_id="+user.getUserId();" 并获取 boxCat 对象,但我无法在 JSTL 中执行相同操作。
    • 如果您真的无法相应地更改模型,那么您最好的办法是将当前用户的所有BoxCat 项目加载到Map<Long, BoxCat> 中,其中键是Box ID。然后,在 EL 中,您只需执行 ${boxCats[box.id].name} 即可显示名称。或者你甚至可以有一个Map<Long, String>,其中的值是盒子名称。
    • 我应该在请求属性中传递那个映射吗?
    • 哦,当然,否则${boxCats} 将一无所获:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2012-12-30
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多