【发布时间】:2017-11-08 05:15:43
【问题描述】:
这里的问题分为两部分。第一部分更多是在 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
}
在控制器中,我通过此操作返回此 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 上处理这种情况。我在 UI 上使用 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 上进行处理,以便服务在收到不在性别枚举列表中的性别时不会引发异常。
【问题讨论】:
标签: java spring-mvc enums thymeleaf