Forms 使用域对象的g:select时出现类型不匹配错误
我正在使用grails开发一个记录贷款的简单应用程序。有三个简单的域类: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 } 公司类
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!