До сих пор я добавляю вещи, которые я хочу иметь в своем списке, к геттеру, что не имеет смысла, и заканчиваю путаницей в моей базе данных при добавлении новой записи.
Моя модель до сих пор:
@Data
@Entity
public class Telefonbuch {
/*@PostConstruct
public void init() {
//geschaeftsstellen = new ArrayList<String>();
geschaeftsstellen.add("Dortmund");
System.out.println("TEEEEEEEEEEEST");
geschaeftsstellen.add("Essen");
geschaeftsstellen.add("Stralsund");
geschaeftsstellen.add("Stuttgart");
geschaeftsstellen.add("Zürich");
geschaeftsstellen.add("Istanbul");
geschaeftsstellen.add("Köln");
geschaeftsstellen.add("Aachen");
geschaeftsstellen.add("Berlin");
}*/
public List<String> getGeschaeftsstellen() {
geschaeftsstellen = new ArrayList<String>();
geschaeftsstellen.add("Dortmund");
System.out.println("TEEEEEEEEEEEST");
geschaeftsstellen.add("Essen");
geschaeftsstellen.add("Stralsund");
geschaeftsstellen.add("Stuttgart");
geschaeftsstellen.add("Zürich");
geschaeftsstellen.add("Istanbul");
geschaeftsstellen.add("Köln");
geschaeftsstellen.add("Aachen");
geschaeftsstellen.add("Berlin");
//ArrayList<String> a = new ArrayList<String>();
//a.add("Test");
return geschaeftsstellen;
}
public void setGeschaeftsstellen(List<String> geschaeftsstellen) {
this.geschaeftsstellen = geschaeftsstellen;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String vorname;
@Column
private String nachname;
@Column
private String telefonnummer;
@Column
private String handynummer;
@Column
private String geschaeftsstelle;
@Column
@ElementCollection
private List<String> geschaeftsstellen;
Я просто показываю другие переменные, чтобы вы знали, что в этом.Я знаю, что аннотация @Column
для Списка не обязательна.Но это вопрос для меня.Должны ли такие данные быть в базе данных или нет?Я никогда не буду использовать это снова где-нибудь еще.Как правильно вставить данные списка для этих кнопок выбора?Когда я просто раскомментирую PostConstruct, он не будет вызван.Когда я добавляю @ManagedBean
, я получаю сообщение об ошибке: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled.
Но в моем .xhtml уже есть selection="#{telefonbuchList.selectedEntry}" selectionMode="single" rowKey="#{telefonbuch.id}"
Как узнать, какой импорт является правильным?javax.annotation или javax.faces.bean?Просто с аннотацией он вызывается.
Здесь видно, где я его использую.Это вкладка «Neuer Eintrag» для нового пользователя.Вкладка «Telefonbuch» представляет собой список с таблицей для всех сущностей.
Редактировать: TelefonbuchListController по запросу:
@Scope (value = "session")
@Component (value = "telefonbuchList")
@ELBeanName(value = "telefonbuchList")
@Join(path = "/", to = "/eintraege-liste.jsf")
public class TelefonbuchListController {
@Autowired
private TelefonbuchRepository telefonbuchRepository;
private List<Telefonbuch> eintraege;
@Deferred
@RequestAction
@IgnorePostback
public void loadData() {
eintraege = telefonbuchRepository.findAll();
}
public List<Telefonbuch> getEintraege() {
return eintraege;
}
private Telefonbuch selectedEntry;
public Telefonbuch getSelectedEntry() {
return selectedEntry;
}
public void setSelectedEntry(Telefonbuch selectedEntry) {
this.selectedEntry = selectedEntry;
}
public void deleteEntry() {
telefonbuchRepository.delete(selectedEntry);
eintraege.remove(selectedEntry);
selectedEntry = null;
}