Я использую Spring-Boot с файлами .jsp для отображения веб-контента. Мой контроллер выглядит так:
@Slf4j
@Controller
@AllArgsConstructor
@SessionAttributes({"language", "amount", "words"})
public class LanguageController
{
private LanguageService languageService;
// Additional services
@Transactional
@GetMapping("/language")
public String editLanguage(ModelMap model, @RequestParam(value = "languageId", defaultValue = "-1", required = false) long languageId)
{
log.info("editLanguage() called");
model.put("languageData", languageService.getLanguageData(languageId));
return "language";
}
// Additional endpoints
}
И файл .jsp содержит следующее:
Edit Language Details
Name:
Public Language:
Min-Word-Length:
Max-Word-Length:
Separate individual letter-combinations by ','
Possible Vocals:
Possible Consonants:
Possible Vocal-Consonant-Combinations:
Possible Consonant-Vocal-Combinations:
Forbidden Combinations:
Когда я открываю конечную точку в браузере, все работает, за исключением флажка isPublic. Флажок никогда не устанавливается заранее, независимо от того, истинно ли логическое значение или ложно.
Я пытался получить доступ к значению логического значения несколькими способами, но ни один из них не помог. Что я здесь делаю не так, почему отмеченное состояние всегда не отмечено, независимо от логического значения?
Я не пытаюсь получить значение флажка, но я хочу установить начальное состояние флажка.
Изменить 1:
Класс My LanguageData:@Data
@Builder
public class LanguageData
{
private Long id;
private String name;
private String username;
private Boolean isPublic;
private int minWordLength;
private int maxWordLength;
private List vocals;
private List consonants;
private List vocalConsonant;
private List consonantVocals;
private List forbiddenCombinations;
public static LanguageData getFromEntity(Language language)
{
// Some conversion logic
}
public boolean invalid()
{
// Some logic
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... pring-form