Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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_Grails Domain Class_Grails Controller - Fatal编程技术网

Grails 发送到服务时列表值发生变化的原因

Grails 发送到服务时列表值发生变化的原因,grails,grails-domain-class,grails-controller,Grails,Grails Domain Class,Grails Controller,我是grails新手,正在开发一个web应用程序 我有一个长值列表,它来自域类对象的ID 最初,该列表类似于[1,2,3]。我需要在我的服务类中使用这个值列表来保存关联 但同样的清单也进入了服务类[49,50,51] 为什么会出现48的差异?我怎样才能得到与我发送的相同的列表 控制器类: def createQuestion(CreateQuestionCommand createQuestionCmd) { if( createQuestionCmd.hasErrors() ) {

我是grails新手,正在开发一个web应用程序

我有一个长值列表,它来自域类对象的ID

最初,该列表类似于[1,2,3]。我需要在我的服务类中使用这个值列表来保存关联

但同样的清单也进入了服务类[49,50,51]

为什么会出现48的差异?我怎样才能得到与我发送的相同的列表

控制器类:

def createQuestion(CreateQuestionCommand createQuestionCmd) { 
  if( createQuestionCmd.hasErrors() ) { 
    render(view:"create_question", model:[createQuestionCmd:createQuestionCmd , tags:Tag.list()]) 
  } else { 
    Question question = new Question() 
    question.title=createQuestionCmd.title 
    question.description=createQuestionCmd.description 
    List tags= createQuestionCmd.tags 
    question = questionService.create(question,tags) 
    render(view: "question_submitted") 
  } 
}
服务类别:

def create(Question question, List<Long> tagId) { 
  List<Tag> tagList=getTagsById(tagId) 
  question.save( failOnError:true ) 
  Iterator itr=tagList.iterator(); 
  while(itr.hasNext()) { 
     Tag tag=itr.next() 
     question.addToTags(tag).save() 
  }
}

def getTagsById(List tagId){ 
  Iterator itr=tagId.iterator(); 
  List<Tag> tags 
  while(itr.hasNext()) { 
    long id=itr.next() 
    println "value of id is : " 
    println id 
    println id.getClass().getName() 
    Tag tag=Tag.findById(id) 
    tags.add(tag) 
  } 
  return tags 
}
def create(def createQuestionCmd) { 
   def question = new Question(title:createQuestionCmd.title,description:createQuestionCmd.description) 
   question.save(flush:true)    
   List tagIds= createQuestionCmd.tags 
   tagIds.each{
      def tag=Tag.findById(id) 
      question.addToTags(tag).save(flush:true) 
   }
}
def创建(问题,列表tagId){
List tagList=getTagsById(tagId)
问题.保存(failOnError:true)
迭代器itr=tagList.Iterator();
而(itr.hasNext()){
Tag Tag=itr.next()
问题.addToTags(tag).save()
}
}
def getTagsById(List tagId){
迭代器itr=tagId.Iterator();
列表标签
而(itr.hasNext()){
long id=itr.next()
println“id的值为:”
println-id
println id.getClass().getName()
Tag Tag=Tag.findById(id)
标签。添加(标签)
} 
返回标记
}

只需将对象传递给服务并创建问题对象。在groovy中,我们以映射格式创建对象。仅在java中,我们需要迭代器来循环集合。在groovy中,我们使用每个闭包来循环集合。试试看,它会成功的。以下代码中的任何问题请告诉我。我将提供帮助

控制器类:

def createQuestion(CreateQuestionCommand createQuestionCmd) { 
  if(createQuestionCmd.hasErrors() ) { 
    render(view:"create_question", model:[createQuestionCmd:createQuestionCmd , tags:Tag.list()]) 
  } else { 
    questionService.create(createQuestionCmd) 
    render(view: "question_submitted") 
  } 
}
服务类别:

def create(Question question, List<Long> tagId) { 
  List<Tag> tagList=getTagsById(tagId) 
  question.save( failOnError:true ) 
  Iterator itr=tagList.iterator(); 
  while(itr.hasNext()) { 
     Tag tag=itr.next() 
     question.addToTags(tag).save() 
  }
}

def getTagsById(List tagId){ 
  Iterator itr=tagId.iterator(); 
  List<Tag> tags 
  while(itr.hasNext()) { 
    long id=itr.next() 
    println "value of id is : " 
    println id 
    println id.getClass().getName() 
    Tag tag=Tag.findById(id) 
    tags.add(tag) 
  } 
  return tags 
}
def create(def createQuestionCmd) { 
   def question = new Question(title:createQuestionCmd.title,description:createQuestionCmd.description) 
   question.save(flush:true)    
   List tagIds= createQuestionCmd.tags 
   tagIds.each{
      def tag=Tag.findById(id) 
      question.addToTags(tag).save(flush:true) 
   }
}

CreateQuestionCmd.tags是
列表
,您正在尝试将其放置到
列表

能否向我们展示控制器和服务的一些代码?控制器类:def createQuestion(CreateQuestionCommand CreateQuestionCmd){if(CreateQuestionCmd.hasErrors()){render(视图:“create_question”,模型:[createQuestionCmd:createQuestionCmd,tags:Tag.list()])else{Question Question=new Question()Question.title=createQuestionCmd.title questionCmd.description list tags=createQuestionCmd.tags Question=questionService.create(Question,tags)render(view:“question_submitted”)}service class:def create(question-question,List-tagId){List-tagList=getTagsById(tagId)question.save(failOnError:true)迭代器itr=tagList.Iterator();while(itr.hasNext()){Tag Tag=itr.next()question.addToTags(tag.save()}}def getTagsById(List tagId){Iterator itr=tagId.Iterator();List tags而id的(itr.hasNext()){long id=itr.next()println”值为:“println id println id.getClass().getName()Tag Tag=Tag.findById(id)tags.add(Tag)}return tags}这是编码的问题。1的ascii值是49等等。