我在 singinsignup.jsp 文件中有以下部分,该文件是网站右侧的永久侧边栏。我可以使用principle.username
获取用户名。但我希望获得用户电子邮件等信息。我是通过使用model.addAttribute在控制器中进行的,但是如何为tile发送值。因此,问题是我如何在侧栏栏中使用user.email
经过身份验证的用户,如果用户通过身份验证,该栏块具有相同的视图?感谢。
singinsingup.jsp文件:
<sec:authorize access="isAuthenticated()">
<img src="http://s3.amazonaws.com/serhat/${principal.}.jpg" align="middle" />
<span><sec:authentication property="user.mail" /></span>
<span><sec:authentication property="principal.username" /></span>
<br />
<s:url value="/static/j_spring_security_logout" var="logout_url" />
<a href="${logout_url}">Logout</a>
<sec:authorize url="/admin">
<s:url value="/admin" var="admin_url" />
<br />
<a href="${admin_url}">Admin</a>
</sec:authorize>
views.xml,涉及瓷砖定义:
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
<definition name="template" template="/WEB-INF/views/main_template.jsp">
<put-attribute name="top"
value="/WEB-INF/views/tiles/spittleForm.jsp" />
<put-attribute name="side"
value="/WEB-INF/views/tiles/signinsignup.jsp" />
</definition>
<definition name="home" extends="template">
<put-attribute name="content" value="/WEB-INF/views/home.jsp" />
</definition>
<definition name="login" extends="template">
<put-attribute name="content" value="/WEB-INF/views/login.jsp" />
<put-attribute name="side"
value="/WEB-INF/views/tiles/alreadyamember.jsp" />
</definition>
<definition name="admin" extends="template">
<put-attribute name="content" value="/WEB-INF/views/admin.jsp" />
</definition>
</tiles-definitions>
更新
我添加了 spt 变量:
value="/WEB-INF/views/tiles/signinsignup.jsp" expression="${spt}" />
为此,我在HomeController中创建了一个变量,我添加了以下几行。但现在我只能按预期在主页上获取电子邮件地址。我想做它并在任何地方的瓷砖中使用它,这样我就不需要在所有控制器中添加这个部分。
Object principal = SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
if (principal == null)
return "home";
if (principal instanceof String)
return "home";
if (principal instanceof User) {
String username = ((User) principal).getUsername();
Spitter myspitter = spitterService.getSpitter(username);
model.put("spt", myspitter);
}