我有一个安装了spring-security-core插件的grails应用程序.一切都在当地很好.我部署到临时服务器,一切正常.我部署到我们的生产服务器,它是我们的登台服务器的镜像.我可以很好地进入未受保护的页面.但是当Spring Security开始并尝试执行重定向时,它会重定向到localhost而不是grails.serverURL.
我打算尽可能高地记录日志并重新部署以查看我是否可以做任何事情的正面或反面.我会在这里发布我的发现.如果有人以前经历过这个并且知道可能发生了什么,请告诉我.此外,如果有任何需要查看的配置文件,我也可以提供.谢谢.
更新 我将以下内容添加到底部Config.groovy
grails.plugins.springsecurity.useSecurityEventListener = true
grails.plugins.springsecurity.onAuthorizationEvent = { e, appCtx ->
println "here"
println e
}
Run Code Online (Sandbox Code Playgroud)
在本地,当我尝试访问受保护的页面时,该闭包会被击中2次.一次为初始网址.第二次使用auth url.将它部署到我们的生产服务器,我什么也得不到.
插件方面以及HTTPBuilder方面的文档似乎都缺乏.我试图通过put方法提交一些json,但它一直告诉我put()不喜欢我正在喂它的地图.
有没有人使用Grails REST Client插件有一个PUT的例子?这是我尝试过的:
withHttp(uri: "http://foo/doo/roo") {
def bodyContent = [
pano: jsonText
]
def json = put(body: bodyContent)
if (json.stat == 'ok') {
wsr.success = true
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
No signature of method: com.wbr.pano.PanService.put() is applicable for argument types: (java.util.LinkedHashMap) values: [[body:
{
"class":"com.wbr.platform.Pano",
"errorMessage":"null",
"imageSize":0,
"id":26,
"completed":"2011-03-20 3:50:27.257",
"downloading":"2011-03-20 3:49:12.269",
"processing":"2011-03-20 3:49:42.911",
"uploading":"2011-03-20 3:50:12.107"
}
]]
Run Code Online (Sandbox Code Playgroud) 我是grails的新手.我花了很多时间寻找使用grails查找图像大小但最终没有任何结果.我想通过给出图像的路径来找到使用grails的图像大小(宽度和高度).是否可以使用grails?如果有,怎么样?请建议我轻松找到图像大小.
先谢谢,Venkatesh
假设我有以下内容:
var address = {id: 100, name: "Gregg", addressOne: "111 1st Street"};
Run Code Online (Sandbox Code Playgroud)
还有一个HTML表单:
<input id="name" />
<input id="addressOne" />
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法来迭代表单的所有INPUT元素,并根据JSON对象的属性设置它们的值.以下是我可以采取的漫长的方法:
$.each($("input"), function(idx, input) {
if (input.attr("id") == "name") input.val( address.name );
if (input.attr("id") == "addressOne") input.val( address.addressOne );
});
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法在没有IF语句的情况下完成上述操作.JavaScript中是否有某种方法可以将两者动态映射在一起.我希望这是有道理的.
我正在尝试逐渐将KnockoutJS洒入我现有的应用程序中.我对此的第一个尝试是采用一些小的现有表单,并将其值推送到服务器上模糊以及通过绑定更新一些元素.
我遇到的问题是,当表单首次显示时,它不会通过knockout填充.我正在使用表单中已有的数据呈现页面.所以我设置我的淘汰赛:
function DomainViewModel() {
this.name = "";
this.description = "";
}
ko.applyBindings(new DomainViewModel());
Run Code Online (Sandbox Code Playgroud)
我有这样的形式:
<input data-bind="value: name" value="${domainInstance.name.encodeAsHTML()}"/>
<textarea data-bind="value: description" >${domainInstance.description.encodeAsHTML()}</textarea>
Run Code Online (Sandbox Code Playgroud)
所以正在发生的是我的表单被显示然后knockout将ViewModel中的值应用到表单中,这会消除服务器放置的值.我理解为什么会发生这种情况并且这不是一个错误.但是,我想知道这里是否还有其他选择.
我知道我可以做以下事情:
function DomainViewModel() {
this.name = "${domainInstance.name}";
this.description = "${domainInstance.name}";
}
Run Code Online (Sandbox Code Playgroud)
但这需要我将一些javascript直接放在GSP中(我使用的是Grails)而不是外部脚本文件.
我在我现有的应用程序中添加了少量的angularjs.我开始使用控制器来管理我的表单,这些表单都是由ajax提交的.表单当前使用jQuery的$.load()
函数进入页面,表单元素已经有值.
我希望我的模型已分配到$ scope以获得这些值.例如:
<form>
<input type="text" ng-model="user.firstName" value="Gregg" />
<input type="text" ng-model="user.lastName" value="Bolinger" />
<button ng-click="update(user)">Save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
然后在我的main.js文件中,我会有以下内容:
function UserCtrl($scope) {
$scope.update = function(user) {
// update the user
};
}
Run Code Online (Sandbox Code Playgroud)
因为我的表单输入元素是空白的,因为ng-model是空的.有没有办法用表格中的现有值初始化我的ng模型?
我试图用Python3做以下事情:
data = json.dumps(packet)
s = StringIO()
g = gzip.GzipFile(fileobj=s, mode='w')
g.write(data)
g.close()
gzipped_body = s.getvalue()
Run Code Online (Sandbox Code Playgroud)
但它一直在抱怨以下错误:
TypeError: string argument expected, got 'bytes'
Run Code Online (Sandbox Code Playgroud)
我正在使用的示例代码基于Python2,所以我认为StringIO中可能会有一些变化,但我不确定.任何人都给我一些关于如何在Python3中获取一些JSON的gzip字符串的提示?
我有一个如此定义的路线:
Router.map(function() {
this.route('games', function() {
this.route('game', {path: '/:game_id'}, function() {});
});
});
Run Code Online (Sandbox Code Playgroud)
当我访问路径时,/games/1
我必须访问模型数据,如下所示:
{{model.title}}
Run Code Online (Sandbox Code Playgroud)
阅读文档,似乎控制器会在没有模型前缀的情况下使模型数据可用,所以我认为我能够做到这一点:
{{title}}
Run Code Online (Sandbox Code Playgroud)
但没有它就行不通model
.我不是在创建控制器,因为我不需要为这个特定的路由/模板扩展它.通过model
前缀准确访问模型数据?或者我可能做错了什么?
在Grails中,我可以说Foo.first()
.在Spring中,我有扩展的存储库,PagingAndSortingRepository
并且我创建了一个名为的服务方法getFirst()
,它执行以下操作:
public Foo getFirst() {
return fooRepository.findAll(new PageRequest(0, 1, new Sort("ASC", "id"))).getContent().get(0);
}
Run Code Online (Sandbox Code Playgroud)
这是最好的方式,还是有一种方便的方法我只是缺少?
假设我有以下内容:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Run Code Online (Sandbox Code Playgroud)
我必须将其更改为:
['a', 'b', 'f', 'c', 'd', 'e', 'g']
Run Code Online (Sandbox Code Playgroud)
最有效的方法是什么?
更新:我实际上需要移位元素,而不是交换.请注意上面我的示例的更改.
grails ×3
groovy ×2
angularjs ×1
ember.js ×1
gzip ×1
httpbuilder ×1
image ×1
javascript ×1
jquery ×1
json ×1
knockout.js ×1
python-3.x ×1
rest ×1
spring ×1
spring-boot ×1