我在我的应用程序中使用spring security和twitter bootstrap。我有这个标题栏,其中包含用户名和密码以及登录按钮的字段。当我单击登录按钮时,我会进行ajax调用以验证用户身份。当这返回成功时,我创建第二个ajax调用以呈现不同的标题栏。两个标题栏在我的布局文件夹中都是部分视图的形式,如下所示:
-Views
- layouts
- partials
- _headerBasic.gsp
- _headerUser.gsp
- main.gsp
- project
我的ajax电话是这样完成的:
<script type="text/javascript">
$(document).ready(function(){
$("#LoginButton").click(function(){
$.ajax({
url: 'http://localhost:8080/XXXXX/j_spring_security_check',
type: 'POST',
data: {
j_username: $("#username").val(),
j_password: $("#password").val()
},
success: function(data){
$.ajax({
url: 'http://localhost:8080/XXXXX/layout/renderNavBarLoggedIn',
type: 'POST',
success: function(data){
$("#navbar").empty();
$("#navbar").html(data);
},
error: function(errorThrown){
alert('Fail!1');
}
});
},
error: function(errorThrown){
alert('Fail!2');
}
});
return false;
});
});
我的控制器是这样的:
class LayoutController {
def renderNavBarLoggedIn(){
render ( view: "/views/layouts/partials/_headerUser" )
}
}
我尝试过而不是查看模板:&#34; / views / layouts / partials / headerUser&#34;但那仍然没有用。
所以回顾一下,我希望我的第二个ajax调用用局部视图替换我的顶部栏。我该怎么做呢?
感谢您的帮助。
编辑:
请注意,控制器的名称与视图文件夹的名称无关,这一点非常重要。
答案 0 :(得分:0)
你可能想要这样的东西:
class LayoutController {
def renderNavBarLoggedIn(){
render ( view: "/layouts/partials/_headerUser" )
}
}
请注意,我遗漏了路径的“views”部分。 “views”是默认的root,所以如果指定“/ views / ...”,系统将查找“/ views / views / ...”。