Grails 类:kaf82.portal.PersonsController没有此类属性:currentperson

Grails 类:kaf82.portal.PersonsController没有此类属性:currentperson,grails,Grails,以下是控制器的代码: package kaf82.portal import javax.xml.parsers.DocumentBuilderFactory class PersonsController { def personList = [] String personsFile = new File('media/data/personsData.xml').text def allpersons () { def persons =

以下是控制器的代码:

package kaf82.portal

import javax.xml.parsers.DocumentBuilderFactory

class PersonsController {
    def personList = []
    String personsFile = new File('media/data/personsData.xml').text   

    def allpersons () {
        def persons = new XmlParser().parseText(personsFile)
        [persons: persons]        
    }    

    def currentperson () {        
        int id=params.id.toInteger()    
        getPersons()
        [currentperson=personList.get(id-1)]       
    }

    def getPersons() {
        def builder = DocumentBuilderFactory.newInstance().newDocumentBuilder()
        def inputStream = new ByteArrayInputStream(personsFile.bytes)
        def root  = builder.parse(inputStream).documentElement        
        def persons = root.childNodes
        (0..<persons.length).each{ processPerson(persons.item(it)) }
        ...

您可能希望使用
[currentperson=personList.get(id-1)]
创建一个映射,但此语法错误

[currentperson: personList.get(id-1)]

此外,此
个人列表作为属性看起来是错误的。

假设第17行为:

[currentperson=personList.get(id-1)] 
您没有正确初始化映射(请参阅)。正确的解决办法是:

[currentperson: personList.get(id-1)] 

否则,编译器应该有一个变量
currentperson
,您想给它赋值。

(0..也感谢您的帮助和文档。
[currentperson: personList.get(id-1)]