【发布时间】:2018-02-16 02:23:06
【问题描述】:
从下面的控制器中,我将资源值列表(即serviceRequestList)传递给模型,然后绑定一个 HTML 选择器(下拉菜单)。但是,在此页面上存在一个对象 ServiceRequestDO。我希望选择器默认为当前对象的值,以便在保存更改时用户不必记住最初的所有值是什么然后重置它们。有道理,对吧?是否有一些 Thymeleaf 条件可以将某些字段的当前模型对象的值与默认选择的选择器相匹配?
ServiceRequestController:
@RequestMapping(value = "edit/{id}", method = RequestMethod.GET)
String GetEditDetails(Model model, Principal principal, @PathVariable("id") Long id, @Valid @ModelAttribute(value = "requestModel") RequestModel requestModel, BindingResult bindingResult, RedirectAttributes redirectAttributes)
{
UserDO currentUser = userRepository.findOneByInitialName(principal.getName());
// Redirect to index if user is not a manager
if (currentUser.getRole() != Role.MANAGER) {
return "redirect:/index";
}
ServiceRequestDO service = serviceRequestRepository.findById(id);
model.addAttribute("service", service);
model.addAttribute("currentUser", currentUser);
model.addAttribute("requestModel", new RequestModel());
List<ServiceRequestTypeResource> serviceRequestList = serviceRequestTypeRepository.findAll();
List<SubServiceRequestTypeResource> subServiceRequestTypeList = subServiceRequestTypeRepository.findAll();
List<ServiceLineTypeResource> serviceLineList = serviceLineRepository.findAll();
List<ProductTypeResource> productList = productRepository.findAll();
List<CustomerNameTypeResource> customerNameList = customerNameRepository.findAll();
List<LocalTeamTypeResource> localTeamList = localTeamRepository.findAll();
serviceRequestList.sort(null);
subServiceRequestTypeList.sort(null);
serviceLineList.sort(null);
productList.sort(null);
customerNameList.sort(null);
localTeamList.sort(null);
/* Drop-Down List */
model.addAttribute("serviceRequestList", serviceRequestList);
model.addAttribute("subServiceRequestList", subServiceRequestTypeList);
model.addAttribute("serviceLineList", serviceLineList);
model.addAttribute("productList", productList);
model.addAttribute("customerNameList", customerNameList);
model.addAttribute("localTeamList", localTeamList);
return "edit";
}
HTML:
<tr>
<td>
<label rel="tooltip"
title="" data-placement="bottom" data-html="true">Service Request Type</label>
</td>
<td>
<select th:name="*{serviceRequestType}">
<option th:each="serviceRequestItem : ${serviceRequestList}"
th:value="${serviceRequestItem}"
th:text="${serviceRequestItem}"
th:selected="${service.serviceRequestType}">
</option>
</select>
</td>
</tr>
例如,使用上面的模板,选择器默认为列表中的底部值,而不管当前对象模型的 ${service.serviceRequestType} 值如何。
【问题讨论】:
标签: java html spring-mvc spring-boot thymeleaf