gpt4 book ai didi

java - 如果未选择,则在 UI 中显示带有默认值的枚举值

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

这里的问题分为两部分。第一部分更多的是在 UI 上显示枚举,第二部分处理处理不在服务端枚举列表中的选定值。

首先,我有一个枚举类 Gender 定义如下。

public enum Gender {

Male("M"),
Female("F");

private String name;

private Gender(String name) {
this.name = name;

}
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

上面的枚举类在用户对象中被引用,如下所示。

public class UserBO {

private Gender gender;


public Gender getGender() {
return gender;
}

public void setGender(Gender gender) {
this.gender = gender;
}

//other getters and setters

}

在 Controller 中,我通过执行此操作返回此 userObject 和性别的下拉列表。

@Controller
public class UserController {

@Autowired
private IUserService userServiceImpl;

@RequestMapping(value = "/user/{userId}/official", method = RequestMethod.GET)
public String getUserOfficialInfo(@PathVariable("userId") Integer userId, Model model) throws ServiceBusinessException {

UserBO userBO = userServiceImpl.findUserByUserId(userId);
model.addAttribute("user", userBO);
model.addAttribute("userId", userId);
model.addAttribute("genders", EnumSet.allOf(Gender.class));
return "official";
}

现在,性别不是用户对象中的必填字段,因此对于某些用户来说,可能根本不会填充该字段。我应该如何在用户界面上处理这种情况。我在 UI 上使用 thymeleaf。

我在 thymeleaf 上尝试过的代码是这样的

<label class="control-label col-xs-2">Marital Status</label>
<div class="col-xs-2">
<select id="maritalStatus" name="maritalStatus">
<option th:each="status : ${maritalStatuses}"
th:value="${status}"
th:text="${status}"
th:selected="${user.maritalStatus == null} ? 'Please select a Value' : ${status.equals(user.maritalStatus.name)}">
</option>
</select>
</div>

有人可以建议我如何处理这个问题吗?

同样来到问题的第二部分,假设用户没有在表单提交上选择任何性别,因为它不是必填字段。应该如何在 UI 上处理这一问题,以便服务在收到不在性别枚举列表中的性别时不会引发异常。

最佳答案

最简单的方法是使用 th:object ,如下所示:

<form th:object="${user}">
<div class="form-group">
<label class="control-label required"></label>
<select id="maritalStatus" class="form-control required" th:field="*{maritalStatus}">
<option value=""></option>
<option th:each="status : ${maritalStatuses}" th:value="${status}"
th:text="${status}"></option>
</select>
</div>
<div class="form-group">
<label class="control-label"></label>
<select id="gender" class="form-control" th:field="*{gender}">
<option value=""></option>
<option th:each="e : ${genders}" th:value="${e.name}"
th:text="${e}"></option>
</select>
</div>
</form>

关于java - 如果未选择,则在 UI 中显示带有默认值的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172048/

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