Issue
In my application I have a database with users. User have String field named Gender. I want to make a form, where user can edit his profile. It's should be filled with existing data.
I have such post method in java code:
@GetMapping("/edit/profile")
public ModelAndView editProfile(Map<String, Object> model){
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
User user = userRepository.findByUsername(auth.getName());
model.put("name", user.getName());
model.put("last_name", user.getLastName());
model.put("company", user.getCompany());
model.put("address", user.getAddress());
model.put("gender", user.getGender());
model.put("birth_date", user.getBirthDate());
return new ModelAndView("edit_profile", model);
}
And this is my mustache edit_profile template:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>To do list profile editing</title>
</head>
<body>
<p>Profile editing</p>
<form action="/api/users/update" method="post">
<div><label> Name : <input type="text" name="name" value="{{name}}" /> </label></div>
<div><label> Last Name : <input type="text" name="lastName" value="{{last_name}}" /> </label></div>
<div><label> Gender : <br>
{{#gender}}
{{#"male"}}
<input type="radio" name="gender" value="male" checked> Male<br>
<input type="radio" name="gender" value="female"> Female
{{/"male"}}
{{#"female"}}
<input type="radio" name="gender" value="male"> Male<br>
<input type="radio" name="gender" value="female" checked> Female
{{/"female"}}
{{/gender}}
{{^gender}}
<input type="radio" name="gender" value="male"> Male<br>
<input type="radio" name="gender" value="female"> Female
{{/gender}}
</label></div>
<div><label> Company : <input type="text" name="company" value="{{company}}" /> </label></div>
<div><label> Birth Date : <input type="date" name="birthDate" value="{{birth_date}}" /> </label></div>
<div><label> Address : <input type="text" name="address" value="{{address}}" /> </label></div>
<input type="hidden" name="_csrf" value="{{_csrf.token}}" />
<div><input type="submit" value="Submit"/></div>
</form>
</body>
</html>
I want to realise logic where:
if(gender)
if(gender.equals("male"))
male radio button checked
if(gender.equals("female"))
female radio button checked
else
no radio buttons checked
Now it doesn't work correctly, please tell me how i can make if equals conditions in mustache?
Solution
Ok, the best way to use boolean in model i guess.
java:
if(!user.getGender().isEmpty()) {
if(user.getGender().equals("male"))
model.put("gender", false);
else if(user.getGender().equals("female"))
model.put("gender", true);
}
mustache:
{{#gender}}
<input type="radio" name="gender" value="male" > Male<br>
<input type="radio" name="gender" value="female" checked> Female
{{/gender}}
{{^gender}}
<input type="radio" name="gender" value="male" checked> Male<br>
<input type="radio" name="gender" value="female"> Female
{{/gender}}
Answered By - YoungDarthVader