如何在JSP中使用父JSP变量javascript注入子JSP



大家好,我在一个使用JSP的Spring MVC应用程序中工作,我的问题是在某个时刻,我发出控制器请求,以获得要包含在div中的JSP代码。我从ModelAndView的答案中获得JSP代码。我把它放在JQuery的div中。但是当我想使用JSP容器变量时,我做不到。我将展示我的代码。

JSP容器(父级)

<div class="row" id="principalDiv">
<div id="menuZone">
<c:forEach items="${user.rol.permisos}" var="permisos">

<div class="col-xs-12 col-sm-6 col-md-4 col-lg-2 iconos methodDiv" id="${permisos.permisoMetodoMap}">
<div>
<center>
<i class="fa <c:out value="${permisos.permisoMetodoIcono}" /> fa-5x" id="icon_${permisos.permisoMetodoMap}"></i>
</center>
<br>
<center>
<div>
<c:out value="${permisos.permisoNombre}" />
</div>
</center>
</div>
</div>
</c:forEach>
</div>
<div id="loadZone">
</div>
</div>

通过一个按钮,我向我的控制器发出请求,以获取"loadZone"的内容。

编码JSP请求

function loadAsp(element) {
$.get('getInclude', {
include : $(element).attr('id')
}, function(responseText) {
$('#loadZone').html(responseText);
});
}

控制器

@Controller
@RequestMapping(value = "/getInclude")
public class IncludesDispatcherController {
@Autowired
FormModelBo boConsultas;
@GetMapping
public ModelAndView getReportesView() {
ModelAndView mav = new ModelAndView("includes/reportes");
try {
mav.addObject("consultas", boConsultas.consultaGeneral());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mav;
}
}

我返回了一个带有模型的视图,以创建一个标题表,在上面的JQuery片段中可以看到,我用html()方法将视图放在div中。

要包含的JSP(子级)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
<div>
<center>
<legend>
<!--                //<img alt="" src="img/pen.png"> -->
Censo M&eacute;tricas Triage ${user.nombre}<br />  <--- this is parent variable.
</legend>
</center>
</div>
<form action="${user.rol.rolMap}/createExcel" method="POST" role="form" id="">
<div class="form-group">
<!-- -------------------------------------------first section--------------------------- -->
<div class="row" style="padding-bottom: 22px !important;">
<div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
<div class="form-group">
<div class="form-group ">
<div class="input-group ">
<span class="input-group-addon">Fecha inicio</span> <input type="date" id="fecha_1" name="fecha_1" />
</div>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
<div class="form-group">
<div class="form-group ">
<div class="input-group ">
<span class="input-group-addon">Fecha final</span> <input type="date" id="fecha_2" name="fecha_2" />
</div>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
<div class="form-group">
<div class="input-group">
<button type="submit" class="btn btn-primary">Generar Reporte</button>
</div>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
</form>

<div style="padding-bottom: 22px !important;">
<table class="table">
<thead>
<tr>
<th>Nombre de médico</th>
<th>Número de consultas</th>
</tr>
</thead>
<tbody>
<c:forEach items="${consultas}" var="consultasLista">
<tr>
<td><c:out value="${consultasLista[0]} ${consultasLista[1]} ${consultasLista[2]}" /></td>
<td><c:out value="${consultasLista[3]}" /></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>

我在ModelAndView中发送的模型变量正在工作,但我的父母没有。

我尝试其他方法,如声明变异

<%
String variable = "test";
%>

request.setAttribute("attrName", myValue); (for catch it in my children JSP with request.getAttribute())

但也不起作用。我不知道是不是因为JSP父代码已经编译好了。我需要访问我的父变量。

请帮帮我,谢谢你抽出时间。

如果您需要IncludesDispatcherController中的变量${user.nombre},则需要将其注入此控制器,然后注入视图,否则它将为null。

无论如何,就像有人已经提到的那样,JSP是服务器端语言,您与javascript和Ajax的交互并不是非常完美。如果您不直接发送HTML,而只是使用JSON发送javascript所需的数据,那么这种方法会更好。

在那之后,如果你使用你的父母已经拥有的数据会更好。你可以把它放在"data-"标签中,然后通过JQuery轻松读取。在你的循环中,你可以做这样的事情:

<a href="#" id="icon_1" data-nombre="${permisos.permisoNombre}">

阅读如下:

$("a#icon_1" ).data("nombre");

最新更新