利用layer实现JSP页面参数跳转与HTML子节点值获取

1 下载量 47 浏览量 更新于2024-08-28 收藏 54KB PDF 举报
在JSP页面开发中,当我们需要实现从一个页面(如original.jsp)通过按钮点击跳转到另一个页面的同时,可能还需要在目标页面获取到源页面中某个HTML子节点元素的值。这一过程通常涉及到前端JavaScript交互和后端Java的处理。以下是如何在layer插件的帮助下完成这一功能的详细步骤。 1. **前端页面操作**: - 在original.jsp中,利用layer组件实现页面的异步跳转。`layer.open` 方法被用于弹出一个新的窗口或层,并传递参数。用户点击按钮时,会触发名为 `btnClick.shownewPage` 的事件处理器。该事件处理器首先获取被点击行的 `Id` 值(例如,可能是一个表格中的行号),然后将其拼接到URL中作为查询参数,如 `'/switch/switchAction!getNewPage.do?Id='+Id`。这样,当页面跳转时,这个 `Id` 就会被传送到后端。 2. **页面跳转与参数传递**: - 使用 `layer.open` 的 `type: 2` 表示打开一个新的浏览器窗口,`area` 属性定义了新窗口的大小。`shadeClose` 参数确保了点击遮罩可以关闭弹出的窗口。 - 跳转的目标是 `SwitchAction` 类的 `getNewPage` 方法,这是Struts框架中一个典型的控制器操作。在这个方法中,通过 `HttpServletRequest` 对象获取到传递的 `Id` 参数,然后将它设置为request属性以便后续使用。 3. **后端逻辑**: - 在 `SwitchAction` 类中,`@Scope(value="prototype")` 注解表明这个类实例化时会创建一个新的bean,适合处理单个请求。`@Controller("SwitchAction")` 是Spring MVC的注解,声明这是一个控制器。 - `getNewPage` 方法中,通过 `request.getParameter("Id")` 获取前端传递的 `Id` 值。接着,将这个值再次设置到request中,这将使Struts2的action能够识别并处理这个参数。 - 如果需要获取HTML子节点元素的值,例如在数据库中对应的字段,可以调用 `pageService.getObjectById(Id)` 来获取数据对象,然后从中提取所需的HTML字符串。比如,如果该对象有一个名为 `newHtml` 的属性,那么就通过 `StringBuffer` 构造该字符串,然后使用 `response.getWriter().print()` 方法将其写入响应,从而在新页面中显示出来。 实现这种页面跳转并在目标页面获取源页面HTML子节点元素的方法是结合前端JavaScript(通过layer组件)、前端与后端的数据交换(通过HTTP请求参数传递)以及后端Java业务逻辑(通过Struts Action和数据访问服务)。这涉及到了Web应用开发的核心技能,包括前端UI交互、服务器端数据处理和前后端数据通信。