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