Использование HashMaps в бэк-бине - PullRequest
0 голосов
/ 13 июня 2019

Я создаю трекер поиска работы для своих поисков работы и пытаюсь использовать 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>

Спасибо за предложения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...