Forms 使用域对象的g:select时出现类型不匹配错误

Forms 使用域对象的g:select时出现类型不匹配错误,forms,select,grails,field,Forms,Select,Grails,Field,我正在使用grails开发一个记录贷款的简单应用程序。有三个简单的域类: class CompanyCategory { String categoryName } class Company { String companyName CompanyCategory category } class Loan { Company bank BigDecimal loanAmount } 公司类

我正在使用grails开发一个记录贷款的简单应用程序。有三个简单的域类:

class CompanyCategory {

    String  categoryName

}

class Company {

    String              companyName
    CompanyCategory     category

}

class Loan {

    Company     bank
    BigDecimal  loanAmount

}
  • 公司类别-基本上分为两类,“银行”和“其他”
  • 公司-系统中的所有公司
  • 贷款-记录我们从哪家银行借款以及借款金额 以下是简单的域类:

    class CompanyCategory {
    
        String  categoryName
    
    }
    
    class Company {
    
        String              companyName
        CompanyCategory     category
    
    }
    
    class Loan {
    
        Company     bank
        BigDecimal  loanAmount
    
    }
    
    从我的控制人处,我找到了所有银行类型的公司,并将其传递给我的gsp,如下所示:

    def create() {
    
        // Looking for all the companies that are of Bank category
        def banks = Company.findAllByCategory( CompanyCategory.findAllByCategoryName("Bank") )
    
        respond new Loan(params), model:[banks: banks]
    }
    
    在我的普惠制中,情况是这样的:

            <g:form resource="${this.loan}" method="POST">
    
    
                <fieldset class="form">
    
                    <f:field bean="loan" property="bank" >
                        <g:select name="lender" from="${banks}" value="{banks?.id}" />
                    </f:field>
    
                    <f:field bean="loan" property="loanAmount" />
    
                </fieldset>
    
    
                <fieldset class="buttons">
                    <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
                </fieldset>
            </g:form>
    
    编辑2 将代码更改为:

                    <f:field bean="loan" property="bank" >
                        <g:select name="bank" from="${banks}" value="{banks?.id}" />
                    </f:field>
    
    
    
    空指针已被修复,但我现在得到一个类型不匹配的错误。有人知道我该怎么解决这个问题吗

    提前谢谢

    变化

    <f:field bean="loan" property="bank" >
        <g:select name="lender" from="${banks}" value="{banks?.id}" />
    </f:field>
    
    
    
    对此

    <f:field bean="loan" property="bank" >
        <g:select name="bank" from="${banks}" optionValue="companyName" optionKey="id" noSelection="['': '']" />
    </f:field>
    
    
    
    提交表单时,Grails使用“name”属性将数据绑定到域对象

    修复类型不匹配错误的步骤

    <f:field bean="loan" property="loanAmount" name="loanAmount"/>
    
    
    
    希望有帮助。

    改变

    <f:field bean="loan" property="bank" >
        <g:select name="lender" from="${banks}" value="{banks?.id}" />
    </f:field>
    
    
    
    对此

    <f:field bean="loan" property="bank" >
        <g:select name="bank" from="${banks}" optionValue="companyName" optionKey="id" noSelection="['': '']" />
    </f:field>
    
    
    
    提交表单时,Grails使用“name”属性将数据绑定到域对象

    修复类型不匹配错误的步骤

    <f:field bean="loan" property="loanAmount" name="loanAmount"/>
    
    
    

    希望对您有所帮助。

    您需要通过name属性将选定的“bank id”绑定到“bank.id”,使用optionKey选项并修复值选项:

    <f:field bean="loan" property="bank" >
        <g:select class="form-control" id="bank" name="bank.id" from="${banks}" optionKey="id" optionValue="companyName" value="${loan.bank.id}"/>
    </f:field>
    

    您需要通过name属性将所选“银行id”绑定到“bank.id”,使用optionKey选项并修复值选项:

    <f:field bean="loan" property="bank" >
        <g:select class="form-control" id="bank" name="bank.id" from="${banks}" optionKey="id" optionValue="companyName" value="${loan.bank.id}"/>
    </f:field>
    
    
    
    谢谢@elixir!这修复了空异常。但是现在有一个类型不匹配错误。我如何将类型转换为公司?再次感谢!我使用脚手架,并从那里修改。这是编辑1后的保存方法。非常感谢您的关注。请看上面的更改。非常感谢@elixir,非常感谢您的帮助!干杯谢谢@elixir!这修复了空异常。但是现在有一个类型不匹配错误。我如何将类型转换为公司?再次感谢!我使用脚手架,并从那里修改。这是编辑1后的保存方法。非常感谢您的关注。请看上面的更改。非常感谢@elixir,非常感谢您的帮助!干杯谢谢你的帮助。。错误变为:类[class test.Company]的属性[category]不能为null类[class test.Company]的属性[companyName]不能为null可能出了什么问题?这是我的标签(根据您的上下文进行了调整):我认为问题来自于值未正确使用的事实,您需要一个OptionKey谢谢!这完全奏效了!我在最终版本中做了一些小改动,效果非常好。再次感谢您@bassmartin!谢谢你的帮助。。错误变为:类[class test.Company]的属性[category]不能为null类[class test.Company]的属性[companyName]不能为null可能出了什么问题?这是我的标签(根据您的上下文进行了调整):我认为问题来自于值未正确使用的事实,您需要一个OptionKey谢谢!这完全奏效了!我在最终版本中做了一些小改动,效果非常好。再次感谢您@bassmartin!