I have an Enum
package com.javarnd.bbms.enums;
public enum BloodTypeEnum {
A_PLUS(1, "A+"), B_PLUS(2, "B+"), O_PLUS(3, "O+"), AB_PLUS(4, "AB+"), A_MINUS(5, "A-"), B_MINUS(6, "B-"),
O_MINUS(7, "O-"), AB_MINUS(8, "AB-");
private final int value;
private final String name;
private BloodTypeEnum(int value, String name) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public int getValue() {
return value;
}
public static BloodTypeEnum getEnumByName(String name) {
BloodTypeEnum[] modes = BloodTypeEnum.values();
if (modes == null) {
return null;
}
for (BloodTypeEnum mode : modes) {
if (mode.getName().equals(name)) {
return mode;
}
}
return null;
}
public static BloodTypeEnum getEnumByValue(int value) {
BloodTypeEnum[] modes = BloodTypeEnum.values();
if (modes == null) {
return null;
}
for (BloodTypeEnum mode : modes) {
if (mode.getValue()==value) {
return mode;
}
}
return null;
}
}
In My Controller
@GetMapping("/add_donor_details")
public ModelAndView addDonorDetails(HttpServletRequest request) {
ModelAndView mav = new ModelAndView("admin/add_donor_details");
DonorDetail donorDetail = new DonorDetail();
mav.addObject("command", donorDetail);
mav.addObject("pageTitle", "Add Donor Details");
mav.addObject("submitBtn", "Add Donor");
mav.addObject("bloodGroup", BloodTypeEnum.values());
mav.addObject("action", "./save");
return mav;
}
@PostMapping("/save")
public ModelAndView saveDonorDetails(@ModelAttribute("command") DonorDetail donorDetail, HttpServletRequest request,
final RedirectAttributes redirectAttributes) {
ModelAndView mav = new ModelAndView("");
DonorDetail dDetail = new DonorDetail();
try {
String bloodType = BloodTypeEnum.getEnumByValue(Integer.parseInt(donorDetail.getBloodGroup())).getName();
dDetail.setBloodGroup(bloodType);
dDetail.setDonorName(donorDetail.getDonorName());
dDetail.setGuardianName(donorDetail.getGuardianName());
dDetail.setAge(donorDetail.getAge());
dDetail.setEmail(donorDetail.getEmail());
dDetail.setContact(donorDetail.getContact());
donorDetailService.save(dDetail);
redirectAttributes.addFlashAttribute("successMsg", "Donor Details Saved Successfully");
mav.setViewName("redirect:./add_donor_details");
} catch (Exception e) {
e.printStackTrace();
redirectAttributes.addFlashAttribute("errorMsg", "Failed to add Donor details,Try Again!!");
mav.setViewName("redirect:./add_donor_details");
}
see the line
String bloodType = BloodTypeEnum.getEnumByValue(Integer.parseInt(donorDetail.getBloodGroup())).getName();
I need to perform this additional step because, instead of getting text value I am getting the Enum Id like 1,2,3,4..
the drop down is properly renders in jsp, but when the value passed form the JSP to controller, is in the form of Id not in textual value, What I did wrong?
JSP Snippet
Select Blood Group
${bg.name}
JavaScript questions and answers, JavaScript questions pdf, JavaScript question bank, JavaScript questions and answers pdf, mcq on JavaScript pdf, JavaScript questions and solutions, JavaScript mcq Test , Interview JavaScript questions, JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)