Spring MVC - 两次提供内容

2024-04-28

我已经花了一周时间寻找有关如何将内容服务器到我的网页的指导***两次,因为使用 Model 或 ModelAndView 切断内容一次可以工作,但如果用户再次与页面交互,我希望它加载更多内容同一页。

Java Spring 后端方法 Get 有效 Post 则不行:

@RequestMapping(value = "explorer", method = RequestMethod.GET)
public String redirectExplorer(@RequestParam(value = "param1", required = false) String name, Model model) {
    if (name != null) {
        ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
        OffenderDAO offenderDAO = (OffenderDAO) context.getBean("offenderDAO");
        Offender[] offenders = null;
        try {
            offenders = offenderDAO.requestOffenders(name);
        } catch (Exception e) {
            e.printStackTrace();
        }
        ((ConfigurableApplicationContext) context).close();
        model.addAttribute("offenderlists", offenders);
    }
    return "explorer";
}

@RequestMapping(value = "explorer", method = RequestMethod.POST)
public String selectionHandler(@RequestParam("offenderid") String text, Model map) {
    String offenderID = text.trim();
    System.out.println("requested more info for: " + offenderID);
    Offender offender = null;
    ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
    OffenderDAO offenderDAO = (OffenderDAO) context.getBean("offenderDAO");
    try {
        offender = offenderDAO.findOffenderById(offenderID);
    } catch (Exception e) {
        e.printStackTrace();
    }
    ((ConfigurableApplicationContext) context).close();
    map.addAttribute("selectedOffender", offender);
    return "explorer";
}

好的,您可以看到 GET 方法加载了一个用户可以与之交互的列表,并且该列表将向显示的其他方法发送发布响应。问题是,即使收到帖子并且数据存在于响应中(由 println 确认),网页也不会更新。

下面是负责上述模型更改的 JSP 代码。

<ul class="result-class">
            <c:forEach var="offender" items="${offenderlists}">
                <li><div class="result-div">
                        <div class="result-img-holder">
                            <img class="lazy" src=<c:out value="${offender.linkToPicture}"/>
                                height="120" width="120" /> <span class=result-div-titles>
                                OffenderID: </span>
                            <c:out value="${offender.offenderId}" />
                        </div>
                        <div class="result-div-oinfo">
                            <ul class="info-list1">
                                <li><span class=result-div-titles> First Name: </span> <c:out
                                        value="${offender.firstName}" /></li>
                                <li><span class=result-div-titles> Last Name: </span> <c:out
                                        value="${offender.lastName}" /></li>
                                <li><span class=result-div-titles> Middle Name: </span> <c:out
                                        value="${offender.middleName}" /></li>
                                <li><span class=result-div-titles> DOB: </span> <c:out
                                        value="${offender.DOB}" /></li>
                                <li><span class=result-div-titles> Sex: </span> <c:out
                                        value="${offender.sex}" /></li>
                                <li><span class=result-div-titles> Risk Level: </span> <c:out
                                        value="${offender.riskLevel}" /></li>
                                <li><span class=result-div-titles> Designation: </span> <c:out
                                        value="${offender.designation}" /></li>
                            </ul>
                            <ul class="info-list2">
                                <li><span class=result-div-titles> Race: </span>
                                <c:out value="${offender.race}" /></li>
                                <li><span class=result-div-titles> Ethnicity: </span>
                                <c:out value="${offender.ethnicity}" /></li>
                                <li><span class=result-div-titles> Hair Color: </span>
                                <c:out value="${offender.hairColor}" /></li>
                                <li><span class=result-div-titles> Eye Color: </span>
                                <c:out value="${offender.eyeColor}" /></li>
                                <li><span class=result-div-titles> Glasses: </span>
                                <c:out value="${offender.correctiveLens}" /></li>
                            </ul>
                            <div class="result-address">
                                <span class=result-div-titles> Primary Address: </span><br>
                                <c:out value="${offender.primaryAddress.address_line1}" />
                                <br>
                                <c:out value="${offender.primaryAddress.city}" />
                                , New York
                                <c:out value="${offender.primaryAddress.zipcode}" />
                            </div>
                        </div>
                    </div></li>
            </c:forEach>
        </ul>


<div id="wide-sidebar">
            First Name: <c:out value="${selectedOffender.firstName}"/>
            <div id="vehicles-sidebar">
                <h1>Vehicles Registered:</h1>
                <ul>
                    <c:forEach  items="${selectedOffender.currentVehicles}" var="vehicle">
                        <li>
                        <span><c:out value="${vehicle.plate}"/></span>
                        <span style="margin:10px;">something1<c:out value="${vehicle.state}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.color}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.make}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.model}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.year}"/></span></li>
                    </c:forEach>
                </ul>
            </div>

问题回顾我有两个列表,它们根据一页上的用户交互彼此分开加载。一个列表会加载,但另一个不会加载。这不是代码,我只是缺少一些东西......没有错误

Goal这里的目标是从数据库加载选项列表,然后用户可以选择加载网页另一半的选项。但请注意,问题在于这些选择可以正常加载,但网页的其余部分则无法加载。如果我首先加载网页的其余部分,它可以工作,但随后列表将不会在请求时加载。


所以我必须制作一个新的 JSP 并使用 iframe...想法受到 Spotify 网络播放器的启发,哈哈;)

这是我使用 Iframe 的方式

<iframe src="wideSidebar" id = "wide-sidebar"></iframe> 
<script>
    $(document).ready(function() {
        $('.result-div').click(function() {
            $(this).fadeOut(1000).fadeIn(200);
            var text1 = $(this).parent().text().split(":")[1].split("\n")[1];
            $("#wide-sidebar").attr("src", "wideSidebar?id="+text1);
            $("#wide-sidebar").css("display", "block");
        });
    });
</script>
@RequestMapping(value = "wideSidebar", method = RequestMethod.GET)
    public ModelAndView getSideBar(@RequestParam(value = "id", required = false) String name) {
        ModelAndView map = new ModelAndView("wideSidebar");
        if (name != null) {
            String offenderID = name.trim();
            System.out.println("requested more info for: " + offenderID);
            Offender offender = null;
            ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
            OffenderDAO offenderDAO = (OffenderDAO) context.getBean("offenderDAO");
            try {
                offender = offenderDAO.findOffenderById(offenderID);
            } catch (Exception e) {
                e.printStackTrace();
            }
            ((ConfigurableApplicationContext) context).close();
            map.addObject("selected", offender);
        }
        return map;
    }

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
First Name: <c:out value="${selected.firstName}"/>
            <div id="vehicles-sidebar">
                <h1>Vehicles Registered:</h1>
                <ul>
                    <c:forEach  items="${selected.currentVehicles}" var="vehicle">
                        <li>
                        <span><c:out value="${vehicle.plate}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.state}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.color}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.make}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.model}"/></span>
                        <span style="margin:10px;"><c:out value="${vehicle.year}"/></span></li>
                    </c:forEach>
                </ul>
        </div>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC - 两次提供内容 的相关文章

  • FileReader 在 Ionic 2 中未触发 onloadend

    我正在尝试使用 cordova file plugin 读取本地文件 目前我可以读取本地目录的内容并选择单个文件 但我在获取文件内容时遇到问题 这是我的函数 从列表中选择文件后单击按钮即可调用该函数 import window resolv
  • 如何列出所有可用的 LookAndFeel 主题?

    如何列出所有可用的 LookAndFeel 主题 我想在 JComboBox 中显示以供用户选择 这真的很简单 public static UIManager LookAndFeelInfo getInstalledLookAndFeels
  • 膨胀类片段 InflateException 二进制 XML 文件时出错

    我正在使用 Material Design 和 NavigationDrawer 布局等设计我的第一个应用程序 但我遇到了一个问题 该应用程序非常简单 它只显示文本 并且基于 Android Studio 中提供的模板 尝试启动我的应用程序
  • Hibernate @OneToMany 注释到底是如何工作的?

    我对 Hibernate 还很陌生 我正在通过教程学习它 我在理解到底如何一对多注释作品 所以我有这两个实体类 Student代表一个学生并且Guide代表指导学生的人 因此 每个学生都与一名向导相关联 但一名向导可以跟随多个学生 我想要一
  • 如何在 Java 中创建要打印到 JFrame 的 JLabels 数组

    我正在尝试制作一系列标签 每个标签都有一个来自函数的不同值 我不知道要使用的标签的确切数量 我的意思是可以打印任意数量的值 请帮我做这件事 很简单 只需一个方法返回一个数组或一些 JLabels 集合 并将它们全部添加到您的 JCompon
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 在方法内声明类 - Final 关键字 [重复]

    这个问题在这里已经有答案了 给定方法中的以下内部类 IsSomething public class InnerMethod private int x public class Something private int y public
  • JavaScript 中的安全数据

    我必须为 Web 测试创建生成器 使用 HTML 和 JavaScript 测试必须离线和在线进行 正确答案和分数评估必须是生成的测试的一部分 最终用户的分数仅发送到服务器 无法在服务器上进行评估 并且服务器对问题一无所知 它只保存最终分数
  • 跟踪预防阻止了对 https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js 存储的访问

    大约一年半前 我使用 OfficeJS API 编写了一个 Excel 加载项 它一直工作到大约两周前 Excel 似乎已经进行了更新 现在我可以右键单击任务窗格并查看开发工具 而以前我无法做到这一点 并且必须运行外部 MS Edge 开发
  • 使用外部按钮选择下一个/上一个单选按钮

    我正在制作一种幻灯片形式 当用户单击下一张图像时 还必须选择单选按钮 我的滑动功能可以正常工作 下一个按钮 也可以工作 但我有点坚持使用 上一个 按钮 不明白为什么它不起作用 fiddle http jsfiddle net V4tdx 这
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • Java中的媒体播放器库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在评估用于在 Java 中播放音频 视频的库 它不需要 100 Java Java 与本机库的绑定
  • SWT - 与操作系统无关的获取等宽字体的方法

    SWT 有没有一种方法可以简单地获得跨各种操作系统的等宽字体 例如 这适用于 Linux 但不适用于 Windows Font mono new Font parent getDisplay Mono 10 SWT NONE 或者我是否需要
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据
  • 如何在控制台中隐藏日志消息的来源?

    当将消息输出到控制台时 还会显示源代码 在 Chrome 开发者工具中 它位于右侧 console log Foo Source Foo test js 1 Output 但是 在某些网站上 会显示消息without正在显示的源 例如Fac
  • 使用 CSP 防止自动点击链接 XSS 攻击

    当将 CSP 用于稍微不同的目的 沙箱 时 我意识到一个非常简单的自动点击链接似乎甚至可以绕过相对严格的 CSP 我所描述的内容如下 内容安全政策 default src none script src unsafe inline 还有身体
  • gjs 如何使用 g_data_input_stream_read_line_async 在 Gnome Shell 扩展中读取套接字流

    我正在尝试编写一个 Gnome Shell 扩展 通过 Socket 服务器与 Arduino 进行通信 服务器和 Arduino 运行良好 但我陷入了监听传入服务器消息的扩展代码 因为我需要一种非阻塞方法 所以使用异步读取行 https

随机推荐