【问题标题】:Filed error in object 'objname' on field:'fieldname' : rejected value [null];字段上的对象 'objname' 中的归档错误:'fieldname':拒绝值 [null];
【发布时间】:2014-10-29 07:54:59
【问题描述】:

我是一个初学者,我正在尝试创建一个类似于 twitter 的应用程序

我有 3 个域类,即用户、推文和关注者。

Followers 域是维护两个用户之间的链接以相互关注。

当我对追随者执行 save() 时,它会引发以下错误,我无法弄清楚我哪里出错了:

字段“follower”上的对象“mail.Follower”中的字段错误:拒绝值 [null];代码 [mail.Follower.follower.nullable.error.mail.Follower.follower,mail.Follower.follower.nullable.error.follower,mail.Follower.follower.nullable.error.mail.User,mail.Follower.follower. nullable.error,follower.follower.nullable.error.mail.Follower.follower,follower.follower.nullable.error.follower,follower.follower.nullable.error.mail.User,follower.follower.nullable.error,mail。 Follower.follower.nullable.mail.Follower.follower,mail.Follower.follower.nullable.follower,mail.Follower.follower.nullable.mail.User,mail.Follower.follower.nullable,follower.follower.nullable.mail。 Follower.follower,follower.follower.nullable.follower,follower.follower.nullable.mail.User,follower.follower.nullable,nullable.mail.Follower.follower,nullable.follower,nullable.mail.User,nullable];论据 [follower,class mail.Follower];默认消息 [类 [{1}] 的属性 [{0}] 不能为空] 字段“用户”上的对象“mail.Follower”中的字段错误:拒绝值 [null];代码 [mail.Follower.user.nullable.error.mail.Follower.user,mail.Follower.user.nullable.error.user,mail.Follower.user.nullable.error.mail.User,mail.Follower.user。 nullable.error,follower.user.nullable.error.mail.Follower.user,follower.user.nullable.error.user,follower.user.nullable.error.mail.User,follower.user.nullable.error,mail。 Follower.user.nullable.mail.Follower.user,mail.Follower.user.nullable.user,mail.Follower.user.nullable.mail.User,mail.Follower.user.nullable,follower.user.nullable.mail。 Follower.user,follower.user.nullable.user,follower.user.nullable.mail.User,follower.user.nullable,nullable.mail.Follower.user

这是我的代码

域名

package mail

class User {
    String name
    String email
    String password
    int age

static constraints = {
    name blank:false
    email blank:false
    password blank:false
    age blank:false

    }
static hasMany=[tweets:Tweets,followers:Follower]



}

追随者域

package mail

class Follower {
    User follower
static constraints = {
    follower nullable:false

}
static belongsTo=[user:User]


}

这是跟随控制器

package mail
import grails.converters.JSON
class FollowerController {


static allowedMethods = [save: "POST", update:"POST", delete:"POST",authenticate:"POST"]

def responseBody =[:]

def index() {}

def list(){
    render Follower.list(sort:"dateCreated",order:"desc") as JSON
}

def get(Long id)
{
    def followerInstace=Follower.get(id)
    render followerInstace as JSON
}

def save()
{
  def followerInstace=new Follower(request.JSON)
  def user=User.get(session.loggedInUser.id)
  println user
  if(followerInstace.save(flush:true))
  {
      user.addToUser(followerInstace.id)
      responseBody.message="saved successfully"
     responseBody.id=followerInstace.id
     responseBody.code=200
     render responseBody as JSON
     return
  }
  println followerInstace.errors
  responseBody.message="save not successfull"
   responseBody.code=400
  println responseBody
  render responseBody as JSON
}

def show(Long id)
{
    def followerInstance=Follower.get(id)
    if(followerInstance)
    {
        responseBody.code=200
        resoponseBody.mesage="file found"
        responseBody.followerInstance=followerInstance
        render responseBody as JSON
    }
    else
    {
        responseBody.code=404
        responseBody.message="Not Found"
        render responseBody as JSON
        return
    }
}


def delete(Long id)
{
    def followerInstace= Follower.get(id)
    followerInstace.delete()
    responseBody.message = "successfully deleted"
    render responseBody as JSON
}
def update(Long id,Long version)
{
    def followerInstance = Follower.get(id)
    followerInstance.properties = params

    if(followerInstance.save(flush:true))
    {
        responseBody.message="successfully updated"
        responseBody.code = 200
        responseBody.id = followerInstance.id
    }
    else {
        responseBody.code = 400
        responseBody.message = 'Some error(s) exist'
    }
    render responseBody as JSON
}

}

【问题讨论】:

    标签: hibernate grails groovy grails-domain-class grails-controller


    【解决方案1】:

    在控制器中试试这个代码:

    def followerInstace=new Follower(request.JSON)
      def user=User.get(session.loggedInUser.id)
      followerInstanse.follower = user
      if(followerInstace.save(flush:true))
      {...
    

    由于字段关注者为空而引发此异常

    【讨论】:

    • 现在它再次显示字段 'user' 上的对象 'mail.Follower' 中的字段错误:拒绝值 [null];
    • @ShreyasRaghunath 那么没有给定 ID 的用户。 User.get() 本身的结果为空。你的原始代码中有一个 println,它打印什么?
    • 我不得不注销并再次登录,一旦我再次登录,它就会正确打印 id
    • @ShreyasRaghunath 你有 Spring Security 插件吗?如果没有,请安装它。并通过 springSecurityService.currentUser 作为用户正常获取用户
    • @Koloritnij 我会试试的
    【解决方案2】:

    我以一种简单的方式解决了这个问题,我将 id 发送到 save 方法而不是整个对象,因为它是我要保存的两个用户之间的链接...

    def save(Long id)
    {
      def followerInstace=new Follower(request.JSON)
      def user=User.get(session.loggedInUser.id)
      User use=User.get(id)
      followerInstace.followers=use
      followerInstace.user = User.get(session.loggedInUser.id)
    
      if(followerInstace.save(flush:true))
      {
    
          responseBody.message="saved successfully"
         responseBody.id=followerInstace.id
         responseBody.code=200
         render responseBody as JSON
         return
      }
      println followerInstace.errors
      responseBody.message="save not successfull"
       responseBody.code=400
      println responseBody
      render responseBody as JSON
    }
    

    现在我得到了正确存储在数据库中的结果

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 2019-05-06
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2019-01-20
      相关资源
      最近更新 更多