W końcu po paru dniach udało mi się pokonać przeszkodę – dodawanie leków do choroby.

Wymyśliłem taką funkcjonalność, że użytkownik będzie mógł do choroby przypisać konkretne leki. Po naciśnięciu buttona dodaj pojawia się lista wszystkich leków z checkboxami, user zaznacza te które chce dodać i daje submit.

Cały czas coś się wykrzaczało ale w końcu z pomocą Shalom forum.4programmers.net udało się rozwiązać problem.

 

MedicamentForm


public class MedicamentForm {

private List<Medicament> medicaments;

private List<Integer> ids;

private int diseaseId;
}

Medicament

@Entity
public class Medicament {

@Id
@GeneratedValue
private int id;

private int liczba;

private String name;

@ManyToOne
@JoinColumn(name = "user_id")
private User user;

@Transient
private String dateStringOpen;
@Transient
private String dateStringExpiration;
@Transient
private String dateStringEnd;

@Temporal(TemporalType.DATE)
private Date dateOpen;

@Temporal(TemporalType.DATE)
private Date dateExpiration;

@Temporal(TemporalType.DATE)
private Date dateEnd;

@ManyToOne
private MedicamentDb medicamentDb;

@ManyToMany(mappedBy="medicaments", fetch = FetchType.EAGER)
private List<Disease> disease;

MedicamentDb

@Entity
public class MedicamentDb {
@Id
@GeneratedValue
private int id;
private String name = "";
private String producent = "";
private double cena = 0;
private String kind = "";

@Transient
private String description = "";

@JsonIgnore
@OneToMany(mappedBy = "medicamentDb")
private List<Medicament> listLek;
}

controller


 @RequestMapping(value = "/addmedicaments/{id}")
 public ModelAndView addMedicaments(@PathVariable int id, Principal principal)
 {
 ModelAndView mav = new ModelAndView("diseaseAddMedicaments");
 String name = principal.getName();
 User user = userService.findByName(name);
 MedicamentForm medicamentForm = new MedicamentForm();
 List&lt;Medicament&gt; list = medicamentService.findByUser(user);
 medicamentForm.setMedicaments(list);
 medicamentForm.setDiseaseId(id);
 mav.addObject("medicamentForm", medicamentForm);
 return mav;

 }

 @RequestMapping(value = "/addmedicaments/do")
 public ModelAndView addMedicamentsSubmit(@ModelAttribute("medicamentForm") MedicamentForm medicamentForm, Principal principal)
 {
 List&lt;Integer&gt; ids = medicamentForm.getIds();
 int diseaseId = medicamentForm.getDiseaseId();
 Disease disease = diseaseService.findById(diseaseId);
 List&lt;Medicament&gt; medicaments = medicamentService.findByDisease(disease);
 for (Integer id : ids) {
 Medicament medicament = medicamentService.findById(id);
 medicaments.add(medicament);
 }
 disease.setMedicaments(medicaments);
 diseaseService.save(disease);
 ModelAndView mav = new ModelAndView("redirect:/disease/list.html");
 return mav;
 }

jsp


<form:form method="POST" modelAttribute="medicamentForm" action="do.html">
<div class="table-responsive">
<table id="myTable"
class="table table-bordered table-hover table-striped">
<thead>
<tr>
<td>dodaj</td>
<td>nazwa leku</td>
<td>opakowanie</td>
<td>data waznosci</td>
<td>Producent</td>
</tr>
</thead>
<tbody>
<c:forEach items="${medicamentForm.medicaments}" var="medicament" varStatus="status">
<tr>
<td><form:checkbox path="ids" value="${medicament.id}"/><input name="diseaseId" type="hidden" value="${medicamentForm.diseaseId}"/></td>
<td>${medicament.medicamentDb.name}</td>
<td>${medicament.medicamentDb.kind}</td>
<td>${medicament.dateExpiration}</td>
<td>${medicament.medicamentDb.producent}</td>
</tr>
</c:forEach></tbody>
</table>
</div>
<input type="submit" value="Dodaj leki" Class="btn btn-default" />
</form:form>

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s