首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过选项卡、jQuery和JSP加载替代内容

通过选项卡、jQuery和JSP加载替代内容
EN

Stack Overflow用户
提问于 2010-02-04 21:12:52
回答 1查看 2.4K关注 0票数 1

我有一个策略类型的数据表(选项有单身、夫妻、家庭和单亲家庭)。我希望有一个选项卡接口,每个策略类型占用一个选项卡。同时,相关策略类型的数据表显示在关联选项卡下面。当用户单击另一个选项卡时,将显示不同的数据表。

我考虑过从数据库导出数据,然后将其转换为XML,然后通过XSLT和/或jQuery将其解析为HTML。我认为这太过分了,因为它只是一张简单的桌子。

我想做的是在外部服务器页面上完成所有的处理,在本例中是JSP,只需交换一部分HTML。因此,用户单击一个选项卡,该选项卡调用外部JSP。外部JSP然后检索相关选项卡的数据,构建表,然后显示在屏幕上。或者外部JSP查询数据库,用唯一的id构建所有四个表,然后jQuery只加载已调用的表。最后,让四个单独的HTML通过JSP构建,然后单独调用它们,会更容易吗?老实说,我更喜欢一个HTML。

我不知道如果表是根据JSP的请求构建的,然后提供给客户端,它是否会击败AHAH的对象。我还担心,如果我们查询数据库并构建表,那么如果数据库数据发生变化,它将如何更新表的内容。

我还以为所有这些都可以在页面上完成,即构建4个表,并隐藏那些与CSS显示的活动选项卡无关的表:没有,但我不确定这些可访问性--屏幕阅读器会接收到这些数据吗?

如果这没有意义的话,我很抱歉,我觉得我可能是想让事情复杂化,但我只是想找出最好的办法。现在已经很晚了

EN

回答 1

Stack Overflow用户

发布于 2010-02-04 21:33:12

您考虑过JSON格式吗?Java可以无缝地将Javabean对象的(集合或映射)转换为JSON格式,例如谷歌Gson。在JavaScript/jQuery中,您可以完美地处理JSON,就好像它是一个值得使用的JavaScript对象一样。它与Java中的Javabean相当。没有像格式化和解析XML这样的开销。

您可以创建一个Servlet,它将一个JSON字符串写入响应,以便它可以被jQuery的$.getJSON()调用。下面是一个示例,其中Item是一个虚构的Javabean,具有idnamevalue三个属性

代码语言:javascript
复制
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    List<Item> items = itemDAO.list();
    String json = new Gson().toJson(items);
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(json);
}

要在表中显示这些项,只需在jQuery中大致如下所示:

代码语言:javascript
复制
<script>
    $(document).ready(function() {
        $.getJSON('json/items', function(items) {
            $(items).each(function(i, item) {
                var row = $('#table').append('<tr>');
                row.append('<td>').text(item.id);
                row.append('<td>').text(item.name);
                row.append('<td>').text(item.value);
            });
        });
    });
</script>

...

<table id="table"></table>

就这样!希望这能给出新的见解。您可以在任何选项卡的click事件中使用此选项卡。如果不存在太大的差异,甚至可以重用相同的表来显示。只要事先做一个$('#table').empty(),就可以去掉所有的行。

编辑:我忽略了一个重要的考虑因素:

但我不确定可访问性-屏幕阅读器会接收这些数据吗?

屏幕阅读器不会执行任何JavaScript/CSS。如果这实际上是一个显示停止器,那么您将需要放弃JS/jQuery的想法,在每个选项卡中使用带有普通<a>链接的“普通普通”同步请求,并利用Servlet和JSP的JSTL/EL功能,根据请求参数有条件地显示内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2203269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档