问题描述
我的项目是一个 spring-boot 项目,使用父依赖项和 thymeleaf 以及一些用于 UI 的 webjars 依赖项。我不知道我错过了什么。
我不能使用 multipartfile 作为 modelattributeDto 的字段。
当我想打开 HTML 时发生异常。我的问题是我想使用 thymeleaf 的验证,并且不想使用 multipartfile 作为简单的 @RequestParam
。
感谢您的帮助。
除标准 spring-boot 2.4.3 依赖项之外的依赖项,pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>4.6.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator</artifactId>
<version>0.40</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>5.15.2</version>
</dependency>
@Controller
public class UploadController {
private final RestUploadService restUploadService;
@GetMapping("/upload")
public String load(Model model) {
model.addAttribute("uploadParams",new UploadParams());
return "upload/upload";
}
@PostMapping("/upload")
public String upload(
@Valid @modelattribute("uploadParams") UploadParams uploadParams,BindingResult result,Model model
) {
return "upload/upload";
}
}
上传参数:
@Data
public class UploadParams {
String tableName;
multipartfile fileSource;
}
HTML 表单:
<form action="#" enctype="multipart/form-data" th:action="@{/upload}" th:object="${uploadParams}" method="post"
onsubmit="this.submit_button.disabled = true;">
<div class="form-group row">
<label for="tableName" class="col-sm-2 col-form-label">Table name</label>
<div class="col-sm-10">
<input id="tableName" class="form-control" type="text" th:field="*{tableName}"
placeholder="testExtendedTable"/>
<div class="alert alert-danger" th:if="${#fields.hasErrors('tableName')}" th:errors="*{tableName}"></div>
</div>
</div>
<div class="form-group row">
<label for="fileSource" class="col-sm-2 col-form-label">SDF file</label>
<div class="col-sm-10">
<input id="fileSource" name="fileSource" class="form-control-file" type="file" placeholder="testExtendedTable" th:field="*{fileSource}"/>
<div class="alert alert-danger" th:if="${#fields.hasErrors('fileSource')}" th:errors="*{fileSource}"></div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
该页面甚至无法加载,并且出现以下异常:
org.springframework.beans.NotReadablePropertyException: Invalid property 'fileSource' of bean class [com.chemaxon.consultancy.codingexercise.adapters.api.dto.UploadParams]: Bean property 'fileSource' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
at org.springframework.beans.AbstractnestablePropertyAccessor.getPropertyValue(AbstractnestablePropertyAccessor.java:625) ~[spring-beans-5.3.4.jar:5.3.4]
at org.springframework.beans.AbstractnestablePropertyAccessor.getPropertyValue(AbstractnestablePropertyAccessor.java:615) ~[spring-beans-5.3.4.jar:5.3.4]
at org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:104) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:228) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:129) ~[spring-webmvc-5.3.4.jar:5.3.4]
at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) ~[spring-webmvc-5.3.4.jar:5.3.4]
at org.thymeleaf.Spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227) ~[thymeleaf-Spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE]
at org.thymeleaf.Spring5.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306) ~[thymeleaf-Spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE]
...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)