Hallo zusammen,
ich sitze an der Programmierung eines Webshops.
Die Artikel sollen in Rubriken und Unterrubriken eingeteilt werden.
Beim Anlegen des Artikels wähle ich sowohl Rubrik als auch Unterrubrik per Dropdownfeld in JSP aus.
Das unschöne daran ist, dass ich sämtliche Unterrubriken angezeigt bekomme, die in der Datenbank vorhanden sind. Ich möchte, dass nur die Unterrubriken ausgewählt werden, die zur ausgewählten Rubrik gehören.
In der MySQL-Datenbank verweist das Feld "RUBRIK_ID" in der Tabelle "UNTERRUBRIK" auf die zu jedem Eintrag in der Unterrubrik gehörende Rubrik.
Leider weiß ich nicht, wie ich meinen Wunsch im Code JSP umsetzen muss und ob dies in der JSP oder in der JAVA-Klasse zur Anlage des Artikels oder im Objekt Unterrubrik implementiert werden muss.
Hier der Codeausschnitt der JSP mit beiden DropDown-Feldern:
Hier der Codeausschnitt des Objetktes Unterrubrik:
Hier die für die Dropdownfelder relevanten Codeschnipsel aus dem Command zur Anlage des Artikels:
Danke schon im Vorfeld für eure Hilfe!
ich sitze an der Programmierung eines Webshops.
Die Artikel sollen in Rubriken und Unterrubriken eingeteilt werden.
Beim Anlegen des Artikels wähle ich sowohl Rubrik als auch Unterrubrik per Dropdownfeld in JSP aus.
Das unschöne daran ist, dass ich sämtliche Unterrubriken angezeigt bekomme, die in der Datenbank vorhanden sind. Ich möchte, dass nur die Unterrubriken ausgewählt werden, die zur ausgewählten Rubrik gehören.
In der MySQL-Datenbank verweist das Feld "RUBRIK_ID" in der Tabelle "UNTERRUBRIK" auf die zu jedem Eintrag in der Unterrubrik gehörende Rubrik.
Leider weiß ich nicht, wie ich meinen Wunsch im Code JSP umsetzen muss und ob dies in der JSP oder in der JAVA-Klasse zur Anlage des Artikels oder im Objekt Unterrubrik implementiert werden muss.
Hier der Codeausschnitt der JSP mit beiden DropDown-Feldern:
Code:
<%
CmdCreateArtikel cmd = (CmdCreateArtikel) request.getAttribute(CmdCreateArtikel.NAME);
%>
<tr>
<td>Rubrik:</td>
<td> <select name="<%=CmdCreateArtikel.PARAM_RUBRIK%>">
<%if (cmd.getArtikel() == null) { %>
<option value="Bitte auswählen" selected=true>Bitte auswählen
</option>
<%} %>
<%
for(Iterator<Rubrik> iter = cmd.getRubriken().listIterator(); iter.hasNext();) {
Rubrik rubrikauswahl = iter.next();
%>
<option value="<%=rubrikauswahl.getId()%>"
<%if (cmd.getArtikel() != null && cmd.getArtikel().getRubrik() != null && rubrikauswahl.getId()==cmd.getArtikel().getRubrik().getId())%>selected=true<%;%>><%=rubrikauswahl.getRubriktext()%></option>
<%
}
%>
</select></td>
</tr>
<tr>
<td>Unterrubrik:</td>
<td> <select name="<%=CmdCreateArtikel.PARAM_UNTERRUBRIK%>">
<%if (cmd.getArtikel() == null) { %>
<option value="Bitte auswählen" selected=true>Bitte auswählen
</option>
<%} %>
<%
for(Iterator<Unterrubrik> iter = cmd.getUnterrubriken().listIterator(); iter.hasNext();) {
Unterrubrik unterrubrikauswahl = iter.next();
%>
<option value="<%=unterrubrikauswahl.getId()%>"<%if (cmd.getArtikel() != null && cmd.getArtikel().getUnterrubrik() != null && unterrubrikauswahl.getId()==cmd.getArtikel().getUnterrubrik().getId()) out.print(" selected");%>><%=unterrubrikauswahl.getUnterrubriktext()%></option>
<%
}
%>
</select></td>
</tr>
Hier der Codeausschnitt des Objetktes Unterrubrik:
Code:
import java.util.List;
public class Unterrubrik {
private Long id;
private String unterrubriktext;
private Rubrik Rubrik;
public Rubrik getRubrik() {
return Rubrik;
}
public void setRubrik(Rubrik Rubrik) {
this.Rubrik = Rubrik;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUnterrubriktext() {
return unterrubriktext;
}
public void setUnterrubriktext(String unterrubriktext) {
this.unterrubriktext = unterrubriktext;
}
public static List<Unterrubrik> getUnterrubriken(org.hibernate.Session session)
{
return (List<Unterrubrik>) session.createCriteria(Unterrubrik.class).list();
}
Hier die für die Dropdownfelder relevanten Codeschnipsel aus dem Command zur Anlage des Artikels:
Code:
import edu.ba.gruppe2.shop.model.Artikel;
import edu.ba.gruppe2.shop.model.Rubrik;
import edu.ba.gruppe2.shop.model.Unterrubrik;
public class CmdCreateArtikel extends AbstractCommand implements ICommand {
private List <Rubrik> rubrikauswahl;
private List <Unterrubrik> unterrubrikauswahl;
public static final String NAME = "CmdCreateArtikel";
public static final String JSP = "createArtikel.jsp";
public static final String PARAM_RUBRIK = "rubrik";
public static final String PARAM_UNTERRUBRIK = "unterrubrik";
public static final String PARAM_SUBMIT = "submit";
public CmdCreateArtikel(IModule pModule) {
super(NAME, pModule);
}
public String process(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
rubrikauswahl = Rubrik.getRubriken(getSession());
unterrubrikauswahl = Unterrubrik.getUnterrubriken(getSession());
Transaction tx = getSession().beginTransaction();
if((request.getParameter(PARAM_SUBMIT) != null ) && (request.getParameter(PARAM_SUBMIT)).equals("Artikel anlegen")){
Artikel artikel = new Artikel();
artikel.setRubrik((Rubrik)getSession().get(Rubrik.class, Long.valueOf(request.getParameter(PARAM_RUBRIK))));
artikel.setUnterrubrik((Unterrubrik)getSession().get(Unterrubrik.class, Long.valueOf(request.getParameter(PARAM_UNTERRUBRIK))));
Long id = (Long) getSession().save(artikel);
String msg = String.format("Ein Artikel mit der ID %s wurde erfolgreich angelegt.", id);
logger.info(msg);
request.setAttribute(IMessage.KEY_MESSAGE, new Message(msg));
tx.commit();
}
return JSP;
}
public Artikel getArtikel(){
return artikel;
}
public List<Rubrik> getRubriken() {
return rubrikauswahl;
}
public List<Unterrubrik> getUnterrubriken() {
return unterrubrikauswahl;
}
Danke schon im Vorfeld für eure Hilfe!