在执行某些逻辑之前,我需要对某些代码执行null/empty检查.我有下面的项目,因为我觉得!members?.empty不正确.
是否有更古老的方式来写下面的内容?
if (members && !members.empty) {
// Some Work
}
Run Code Online (Sandbox Code Playgroud) 我是grails的新手,我在许多例子中发现变量可能以问号(?)结尾
boolean equals(other) {
if(other?.is(this))
return true
}
Run Code Online (Sandbox Code Playgroud)
上面的代码包含If中的条件,其他是以?结尾?所以我想知道那种表现的意义
我有两个域类,一个是父类,另一个是子类,我们之间有一个hasMany关系.父类有许多子级,子类属于父类.这是编码示例.
class Parent{
String name
static hasMany = [childs:Child]
static constraints = {
}
}
class Child{
String name
static belongsTo = [parent:Parent]
static constraints={}
}
Run Code Online (Sandbox Code Playgroud)
问题是,一旦我获得父对象,也会获取与父类关联的子对象.但是当我将对象转换为JSON时,我没有完全看到子对象,我只能看到子对象的ID.我想查看子对象的所有列而不是Id.
转换的JSON响应:
[{"class":"project.Parent","id":1,
"name":"name1","childs":[{"class":"Child","id":1},{"class":"Review","id":2}]}]
Run Code Online (Sandbox Code Playgroud)
但是我也想要包含子对象名称的响应,如下所示
[{"class":"project.Parent","id":1,"name":"name1",
"childs":[{"class":"Child","id":1,"name":"childname1"},
{"class":"Review","id":2,"name":"childname2"}
]
}]
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.提前致谢.
我找不到使用这种格式格式化UTC时间戳的好方法: yyyyMMdd-HH:mm:ss.<three additional digits>
我无法找到任何代表毫秒/百分之一的字符,我甚至不确定这是否可行,以解析那种格式.
理想情况下,我想使用parseToStringDateDate库中的那部分.
我的计划b是转换yyyyMMdd-HH:mm:ss为毫秒,然后将最后三位数字添加到该数字.
我在android phonegap做项目,我想上传pic到服务器.
但我不知道,我应该把这段代码放在哪里.
我无法显示任何上传照片的按钮,请帮忙.
我是新手.我从phonegap文档中查看了这段代码.
我想这几个小时,但无法得到更好的解决方案.
这是我的第一个android phonegap项目.
码:
<head>
<script type="text/javascript" charset="utf-8" src="cordova-2.4.0.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.camera.getPicture(uploadPhoto,
function(message) { alert('get picture failed'); },
{ quality: 50, destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }
);
}
function uploadPhoto(imageURI) {
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = {};
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
}
function win(r) {
console.log("Code = …Run Code Online (Sandbox Code Playgroud) 我有以下课程:
class User {
hasMany = [ratings: Rating]
}
class Item {
hasMany = [ratings: Rating]
}
class Rating {
belongsTo = [user: User, item: Item]
}
Run Code Online (Sandbox Code Playgroud)
我想要计算对项目评分的不同用户.
以下不起作用:
select count(distinct(r.user)) from Rating as r
where r.item=:item
group by r.user
Run Code Online (Sandbox Code Playgroud)
如何修改HQL查询以使其工作?
以下代码不对用户进行身份验证(不会发生身份验证失败,但由于缺少权限而导致调用失败):
def remote = new HTTPBuilder("http://example.com")
remote.auth.basic('username', 'password')
remote.request(POST) { req ->
uri.path = "/do-something"
uri.query = ['with': "data"]
response.success = { resp, json ->
json ?: [:]
}
}
Run Code Online (Sandbox Code Playgroud)
但以下工作正常:
def remote = new HTTPBuilder("http://example.com")
remote.request(POST) { req ->
uri.path = "/do-something"
uri.query = ['with': "data"]
headers.'Authorization' =
"Basic ${"username:password".bytes.encodeBase64().toString()}"
response.success = { resp, json ->
json ?: [:]
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不是第一个工作?
自从我4个月前开始工作以来,我对Grails完全不熟悉并且正在测试它的功能.几个星期前训练我测试的人离开了我们小组,现在我自己进行测试.我已经放缓已经发现的是,我就怎么做的Grails集成测试训练方式几乎是从我见过的人做的论坛和支持团体的方式(一个或多个)完全不同.我真的可以使用哪种方式是正确/最好的.我目前正在使用Grails 2.4.0,顺便说一句.
以下是我接受过培训的样式的集成测试示例模型.这是我应该做的正确甚至是最好的方式吗?
@Test
void "test a method in a controller"() {
def fc = new FooController() // 1. Create controller
fc.springSecurityService = [principal: [username: 'somebody']] // 2. Setup Inputs
fc.params.id = '1122'
fc.create() // 3. Call the method being tested
assertEquals "User Not Found", fc.flash.errorMessage // 4. Make assertions on what was supposed to happen
assertEquals "/", fc.response.redirectUrl
}
Run Code Online (Sandbox Code Playgroud) 我试图在Grails 3.1中使用JSON-Views.
我有以下控制器:
package myapp
BasketController {
def index(ProductFilterCommand cmd) {
[basketList: service.findAllBaskets()]
}
}
Run Code Online (Sandbox Code Playgroud)
以下课程:
package myapp
class Basket {
List<BasketItem> items
}
class BasketItem {
String name
}
Run Code Online (Sandbox Code Playgroud)
这是我认为可以工作的gson文件:
篮/ index.gson
import myapp.Basket
model {
Iterable<Basket> basketList
}
json.baskets(basketList) {
g.render(template: "basket", model: [basket: it])
}
Run Code Online (Sandbox Code Playgroud)
篮/ _basket.gson
import myapp.Basket
model {
Basket basket
}
json.items(basket.items) {
g.render(template: "item", model:[item: it])
}
Run Code Online (Sandbox Code Playgroud)
篮/ _item.gson
import myapp.Item
model {
Item item
}
json g.render(item)
Run Code Online (Sandbox Code Playgroud)
我想生成json,例如:
{
"baskets": …Run Code Online (Sandbox Code Playgroud) 鉴于以下类别的安排:
class GrandParent {
String init() {
return "GrandParent init, "
}
}
class Parent extends GrandParent {
String init() {
return super.init() + "Parent init, "
}
}
class ChildInitAndVisit extends Parent {
String init() {
return super.init() + "Child init"
}
String visit() {
return super.init() + "Child visit"
}
}
class ChildVisitOnly extends Parent {
String visit() {
return super.init() + "Child visit"
}
}
Run Code Online (Sandbox Code Playgroud)
然后以这种方式使用它们:
iv = new ChildInitAndVisit()
println "ChildInitAndVisit - calling init() -> ${iv.init()}" …Run Code Online (Sandbox Code Playgroud)