我正在一个spring mvc项目中工作,我在一个jsp视图中有一个问题,c:url不是在url上添加上下文,我有一切正常工作,在其他视图c:url工作正常,只是在一个视图中它没有。
首先,我有以下文件(名为include.jsp):
<%@ page session="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%>
在开始每个视图时,我都会包含该文件。
例如我有这个观点:
<%@ include file="/WEB-INF/views/include.jsp"%>
<html>
<head>
<meta charset="UTF-8">
<title>Registro de Persona</title>
<%@ include file="/WEB-INF/views/globalHeaders.jsp"%>
</head>
<body class="skin-blue">
<!-- a lot of things -->
<!-- Main content -->
<!-- a lot of things -->
<c:if test="${!empty usuariosForm.fotografia}"> <c:set var="fotoUrl" value="${usuariosForm.fotografia}" />
</c:if>
<c:if test="${empty usuariosForm.fotografia}">
<c:set var="fotoUrl" value="/resources/img/320x310.gif" />
</c:if>
<label>Foto:</label> <img
src="<c:url value="${fotoUrl}"/>" alt="Fotografia"
class="img-thumbnail img-responsive" title="Fotografia" />
<!-- a lot of things more -->
并按照预期建立了照片图像的src,在startint处添加了上下文。
现在在以下视图中:
<%@ include file="/WEB-INF/views/include.jsp"%>
<header class="main-header">
<div class="navbar-custom-menu">
<!-- lot of things -->
<security:authorize access="isAuthenticated()">
<security:authentication property="principal.nombre" /> <i class="caret"></i></span>
</a>
<c:set var="fotoUrl">
<security:authentication property="principal.fotografia" />
</c:set>
<c:if test="${empty fotoUrl}">
<c:set var="fotoUrl" value="/resources/img/user.png" />
</c:if>
<ul class="dropdown-menu">
<li class="user-header light-blue">
<img src="<c:url value="${fotoUrl}"/>" alt="Fotografia" class="img-thumbnail img-responsive" title="Fotografia" />
<p>
<security:authentication property="principal.nombre" />
<security:authentication property="principal.apPaterno" />
<security:authentication property="principal.apMaterno" />
</p>
</li>
<li class="user-footer">
<div class="pull-left">
<a href="#" class="btn btn-default btn-flat">Perfil</a>
</div>
<div class="pull-right">
<a href="j_spring_security_logout"
class="btn btn-default btn-flat">Salir</a>
</div>
</li>
</ul></li>
</security:authorize>
</ul>
</div>
</nav>
</header>
我的ID不起作用,图片的网址永远不会有应用的上下文
我在某个地方看到标签不应该在另一个标签内,而且我是c的标签:url必须在security:authorize标签之外,我试过这种方式但仍然没有用。
这有什么不对吗?
答案 0 :(得分:0)
最后在尝试了几件事后,我得到了一个解决方案,问题来自于设置fotourl中的值,来自代码:
<c:set var="fotoUrl">
<security:authentication property="principal.fotografia" />
</c:set>
相反,之前的代码我现在正在使用:
<security:authentication var="fotoUrl" property="principal.fotografia" />
并且工作正常。