c:在我的一个视图中,url不会将上下文挂起到url

时间:2015-03-23 02:20:20

标签: spring-mvc jstl jsp-tags

我正在一个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标签之外,我试过这种方式但仍然没有用。

这有什么不对吗?

1 个答案:

答案 0 :(得分:0)

最后在尝试了几件事后,我得到了一个解决方案,问题来自于设置fotourl中的值,来自代码:

<c:set var="fotoUrl">
<security:authentication property="principal.fotografia" />
</c:set>

相反,之前的代码我现在正在使用:

<security:authentication var="fotoUrl" property="principal.fotografia" />

并且工作正常。