gpt4 book ai didi

spring-boot - 在 'isLPG' 类型的对象上找不到属性或字段 'com.rentautosofia.rentacar.bindingModel.CarBindingModel' - 也许不是公共(public)的?

转载 作者:行者123 更新时间:2023-12-02 12:48:18 25 4
gpt4 key购买 nike

我有一个像这样的 MVC 逻辑。

汽车绑定(bind)模型

package com.rentautosofia.rentacar.bindingModel

import javax.validation.constraints.Size

class CarBindingModel(@Size(min = 1)
var name: String = "",
@Size(min = 1)
var price: Int = 0,
@Size(min = 1)
var imgURL: String = "",
var isLPG: Boolean? = false)

汽车 Controller
package com.rentautosofia.rentacar.controller.admin

import ...

const val PATH_ADMIN_CAR = "admin/car"
const val PATH_ADMIN_ALL_CARS = "$PATH_ADMIN_CAR/all"

@RequestMapping("/$PATH_ADMIN_CAR")
@Controller
class CarController @Autowired
constructor(private val carRepository: CarRepository) {

@GetMapping("/create")
fun create(model: Model): String {
model.addAttribute("car", CarBindingModel())
model.addAttribute("view", "$PATH_ADMIN_CAR/create")
return "base-layout"
}

@PostMapping("/create")
fun createProcess(model: Model, @Valid carBindingModel:
CarBindingModel, bindingResult: BindingResult): String {
if (bindingResult.hasErrors()) {
model.addAttribute("view", "$PATH_ADMIN_CAR/create")
model.addAttribute("message", "Invalid data.")
model.addAttribute("car", carBindingModel)
return "base-layout"
}

val car = car {
name = carBindingModel.name
price = carBindingModel.price
imgURL = carBindingModel.imgURL
isLPG = carBindingModel.isLPG
}

this.carRepository.saveAndFlush(car)
return "redirect:/$PATH_ADMIN_ALL_CARS"
}
...
}

车景

重要的是这个(这是我得到错误的地方)
<input  id="isLPG" type="checkbox" name="isLPG" th:checked="${car.isLPG}"/>

问题是我认为我得到了一个SpEL。它说它找不到属性 isLPGCarBindingModel .

错误:
An error happened during template parsing (template: "class path resource [templates/base-layout.html]")
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "car.isLPG" (template: "admin/car/create" - line 16, col 65)
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "car.isLPG" (template: "admin/car/create" - line 16, col 65)
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:
Property or field 'isLPG' cannot be found on object of type 'com.rentautosofia.rentacar.bindingModel.CarBindingModel' - maybe not public?
org.springframework.expression.spel.SpelEvaluationException: EL1008E:
Property or field 'isLPG' cannot be found on object of type 'com.rentautosofia.rentacar.bindingModel.CarBindingModel' - maybe not public?

我基本上是想从这个复选框绑定(bind)一个 bool 值。
如果您需要更多详细信息,我会很乐意添加它们。

最佳答案

看起来 SpEL 被 is 混淆了字首。

这有效

package foo

class CarBindingModel(
var name: String = "",

var price: Int = 0,

var imgURL: String = "",

var LPG: Boolean? = false)


public class So49863132Application {

public static void main(String[] args) {
CarBindingModel car = new CarBindingModel("Lexus", 42, "img.png", true);
Expression exp = new SpelExpressionParser().parseExpression("name + ' ' + price + ' ' + LPG");
System.out.println(exp.getValue(car));
}

}


Lexus 42 true

编辑

这是由于 Kotlin 创建 getter 的方式;对于 isLPG , kotlin 生成 isLPG() .

SpEL 期待 isIsLPG() .

关于spring-boot - 在 'isLPG' 类型的对象上找不到属性或字段 'com.rentautosofia.rentacar.bindingModel.CarBindingModel' - 也许不是公共(public)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49863132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com