Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails一对多关系错误_Grails_Associations_Unique - Fatal编程技术网

Grails一对多关系错误

Grails一对多关系错误,grails,associations,unique,Grails,Associations,Unique,我有一个用户域类,如下所示: package xyz class User { String login String password String firstName String lastName String address String email static hasMany = [ websites: AddWebsite ] static constraints = { lo

我有一个用户域类,如下所示:

package xyz

class User {
    String login
    String password
    String firstName
    String lastName
    String address
    String email
    static hasMany = [
        websites: AddWebsite
    ]
    static constraints = {
        login blank:false, size:5..15,matches:/[\S]+/, unique:true
        password blank:false, size:5..15,matches:/[\S]+/
        firstName blank:false
        lastName blank:false
        email email: true

    }
}
package xyz
import xyz.User;
class AddWebsite {

    String website
    User user
    static belongsTo = [user: User]
    static constraints = { website url:true }
}
package xyz

class AddWebsiteController {

    def index() {
    }
def addWebsites() {
    if(request.method == 'POST') {
        def u = new AddWebsite()
        u.properties[
                    'website'
                ] = params

        if(u.website =="" ) {
            u.errors.rejectValue("website", "addwebsite.website.empty")
            return [addWebsite:u]
        }
        else if(u.save()) {
            render view:'addWebsites', model:[message: "Successfully saved: \""+u.website+"\" Add more websites..."]
            //redirect(controller: "AddWebsite", action: "websiteAdded")

        }
        else {
            return [addWebsite:u]
        }
    }
}


def websiteAdded() {
}

def failed(){
}
和另一个AddWebsite域类,如下所示:

package xyz

class User {
    String login
    String password
    String firstName
    String lastName
    String address
    String email
    static hasMany = [
        websites: AddWebsite
    ]
    static constraints = {
        login blank:false, size:5..15,matches:/[\S]+/, unique:true
        password blank:false, size:5..15,matches:/[\S]+/
        firstName blank:false
        lastName blank:false
        email email: true

    }
}
package xyz
import xyz.User;
class AddWebsite {

    String website
    User user
    static belongsTo = [user: User]
    static constraints = { website url:true }
}
package xyz

class AddWebsiteController {

    def index() {
    }
def addWebsites() {
    if(request.method == 'POST') {
        def u = new AddWebsite()
        u.properties[
                    'website'
                ] = params

        if(u.website =="" ) {
            u.errors.rejectValue("website", "addwebsite.website.empty")
            return [addWebsite:u]
        }
        else if(u.save()) {
            render view:'addWebsites', model:[message: "Successfully saved: \""+u.website+"\" Add more websites..."]
            //redirect(controller: "AddWebsite", action: "websiteAdded")

        }
        else {
            return [addWebsite:u]
        }
    }
}


def websiteAdded() {
}

def failed(){
}
我在后端与MongoDB合作。我需要每个用户谁登录可以添加网站,但一个用户不能添加同一个网站多次,但同一个网站可以由不同的用户添加。每当我尝试添加网站时,它都会显示“用户不能为空错误”

我的AddWebsite控制器类如下:

package xyz

class User {
    String login
    String password
    String firstName
    String lastName
    String address
    String email
    static hasMany = [
        websites: AddWebsite
    ]
    static constraints = {
        login blank:false, size:5..15,matches:/[\S]+/, unique:true
        password blank:false, size:5..15,matches:/[\S]+/
        firstName blank:false
        lastName blank:false
        email email: true

    }
}
package xyz
import xyz.User;
class AddWebsite {

    String website
    User user
    static belongsTo = [user: User]
    static constraints = { website url:true }
}
package xyz

class AddWebsiteController {

    def index() {
    }
def addWebsites() {
    if(request.method == 'POST') {
        def u = new AddWebsite()
        u.properties[
                    'website'
                ] = params

        if(u.website =="" ) {
            u.errors.rejectValue("website", "addwebsite.website.empty")
            return [addWebsite:u]
        }
        else if(u.save()) {
            render view:'addWebsites', model:[message: "Successfully saved: \""+u.website+"\" Add more websites..."]
            //redirect(controller: "AddWebsite", action: "websiteAdded")

        }
        else {
            return [addWebsite:u]
        }
    }
}


def websiteAdded() {
}

def failed(){
}
}


另外,我不知道如何测试这个一对多关联。请帮忙

找到了答案。我在控制器中进行了此更改,以便用户不再为空:

def addWebsites() {
    if(request.method == 'POST') {
        def w = new AddWebsite()
        w.properties[
                    'website'
                ] = params
        w.user = session["user"]   //modified
        if(w.website =="" ) {
            w.errors.rejectValue("website", "addwebsite.website.empty")
            return [addWebsite:w]
        }
        else if(w.save()) {
            render view:'addWebsites', model:[message: "Successfully saved: \""+w.website+"\" Add more websites..."]
        }
        else {
            return [addWebsite:w]
        }
    }
}