Я создаю трекер поиска работы для своих поисков работы и пытаюсь использовать HashMap для хранения набора навыков кандидата в компоненте поддержки, и у меня возникают проблемы с применением HashMap к форме.
Вот боб
package com.nexus.jobsearchtracker.domain;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
@Table(name="Applicants")
public class Applicant {
@Id
@GeneratedValue
private Long id;
@NotNull
@Size(max = 40)
private String firstName;
@NotNull
@Size(max = 40)
private String lastName;
private Integer yearsOfExperience;
@Embedded
private Address address;
private HashMap<String, Integer> skills = new HashMap<>();
public Applicant() {}
public Applicant(Long id, @NotNull @Size(max = 40) String firstName, @NotNull @Size(max = 40) String lastName,
Integer yearsOfExperience, Address address, HashMap<String, Integer> skills) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.yearsOfExperience = yearsOfExperience;
this.address = address;
this.skills = skills;
}
public HashMap<String, Integer> getSkills() {
return skills;
}
public void setSkills(HashMap<String, Integer> skills) {
this.skills = skills;
}
// Other accessors ommited for brevity
}
Вот форма, которую я использую
<table>
<thead>
<tr>
<td>Skill</td>
<td>Years Experience</td>
<td><input id="addSkill" type="button" value="Add Skill"></td>
</tr>
</thead>
<tbody id="skillset">
<tr>
<td><input id="skill" type="text" th:field="*{skills[key]}"></td>
<td><input id="yearsExp" type="number" th:field="*{skills[value]}"></td>
</tr>
</tbody>
</table>
Когда я отлаживаю свой код, я вижу
{value=11}
вместо
{java=11}
Есть ли что-то, что я делаю здесь не так?
Редактировать: Проведя дополнительные исследования, я нашел ответ через препроцессоры Thymeleaf.
<tbody id="skillset" th:each="skill,skillStat: *{skills}">
<tr>
<td><input id="skill" type="text" th:field="*{skills[__${skillStat.index}__].skill}"></td>
<td><input id="yearsExp" type="number" th:field="*{skills[__${skillStat.index}__].yearsOfExperience}"></td>
</tr>
</tbody>
Спасибо за предложения!