【发布时间】:2021-08-25 06:44:24
【问题描述】:
我有两个班:
import java.io.Serializable;
import java.util.Objects;
public class MediaTypeDto implements Serializable {
private String fileExtension;
private MediaTypeEnum mediaType;
public MediaTypeDto() {
}
public MediaTypeDto(String fileExtension, MediaTypeEnum mediaType) {
this.fileExtension = fileExtension;
this.mediaType = mediaType;
}
public String getFileExtension() {
return fileExtension;
}
public void setFileExtension(String fileExtension) {
this.fileExtension = fileExtension;
}
public MediaTypeEnum getMediaType() {
return mediaType;
}
public void setMediaType(MediaTypeEnum mediaType) {
this.mediaType = mediaType;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MediaTypeDto that = (MediaTypeDto) o;
return fileExtension.equals(that.fileExtension) && mediaType.equals(that.mediaType);
}
@Override
public int hashCode() {
return Objects.hash(fileExtension, mediaType);
}
@Override
public String toString() {
return "MediaTypeDto{" +
"fileExtension='" + fileExtension + '\'' +
", mediaType='" + mediaType + '\'' +
'}';
}
}
和
import java.io.Serializable;
public enum MediaTypeEnum implements Serializable
{
WALLPAPER("Fond d'écran"),
PERSONNAL_PHOTO("Photo personnel"),
OTHER_IMAGE("Autre photo"),
MUSIC("Music"),
AUDIO_BOOK("Livre audio"),
OTHER_SOUND("Autre son"),
MOVIE("Film"),
PERSONNAL_VIDEO("Vidéo personnel"),
OTHER_VIDEO("Autre vidéo"),
BOOK("Livre"),
OTHER_DOCUMENT("Autre document"),
VIDEO_GAME("Jeux vidéo"),
FILE_3D("Fichier 3D");
/*public static final Set<MediaTypeEnum> IMAGE = EnumSet.of(WALLPAPER, PERSONNAL_PHOTO, OTHER_IMAGE);
public static final Set<MediaTypeEnum> SOUND = EnumSet.of(MUSIC, AUDIO_BOOK, OTHER_SOUND);
public static final Set<MediaTypeEnum> VIDEO = EnumSet.of(MOVIE, PERSONNAL_VIDEO, OTHER_VIDEO);
public static final Set<MediaTypeEnum> DOCUMENT = EnumSet.of(BOOK, OTHER_DOCUMENT);
public static final Set<MediaTypeEnum> PERSONNAL = EnumSet.of(PERSONNAL_PHOTO, PERSONNAL_VIDEO);
*/
private final String displayValue;
MediaTypeEnum(String displayValue) {
this.displayValue = displayValue;
}
public String getDisplayValue() {
return displayValue;
}
}
在我的控制器中,我有这个请求:
@GetMapping("/create")
public String create( Model model) {
model.addAttribute("mediaTypeDto", new MediaTypeDto());
model.addAttribute("mediaTypeEnum", MediaTypeEnum.class);
return "createMediaType";
}
在我的 html 中:
<!DOCTYPE html>
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="#" th:action="@{/mediaType/create}" th:object="${mediaTypeDto}" method="post">
<p>Extention: <input type="text" th:field="${mediaTypeDto.fileExtension}"/></p>
<select name="color" th:field="*{mediaTypeDto.mediaType}">
<option th:each="mediaTypeEnum : ${T(com.korp.multimedia.entity.MediaTypeEnum).values()}"
th:value="${mediaTypeEnum}" th:text="${mediaTypeEnum}"></option>
</select>
<p><input type="submit" value="Submit"/> <input type="reset" value="Reset"/></p>
</form>
</body>
</html>
当我尝试访问该页面时,我收到以下错误消息:
org.springframework.beans.NotReadablePropertyException: 无效 bean 类的属性“mediaTypeDto” [com.korp.multimedia.entity.MediaTypeDto]:Bean 属性 “mediaTypeDto”不可读或具有无效的 getter 方法:是否 getter 的返回类型是否与 setter 的参数类型匹配?
我不明白为什么它声称属性的 getter 和 setter 不存在
【问题讨论】: