Anzeigen einer Liste in einem Struts-1-form
Ich zu schreiben, ein backoffice-Seite, um zu bestimmen, welche Geschäfte sich auf einen frontoffice-Seite, in einer Struts 1 Anwendung. Also ich habe eine Liste mit Läden (Boutiquen, in den code), die in einer form.
Form:
public class ListeBoutiquesForm extends ActionForm {
private List<Boutique> boutiques = new ArrayList<Boutique>();
public List<Boutique> getBoutiques() {
return boutiques;
}
public void setBoutiques(List<Boutique> boutiques) {
this.boutiques = boutiques;
}
}
und die Aktion speichern:
public ActionForward sauverBoutiques(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ListeBoutiquesForm vlbf = (ListeBoutiquesForm) form;
for (Boutique boutique : vlbf.getBoutiques()) {
boutiqueService.updateBoutique(boutique);
}
request.getSession().removeAttribute("ListBoutiques");
return listeSites(mapping, form, request, response);
}
Der Boutique-Klasse enthält eine id, einen Namen und ein boolean als "ausgewählt". Ich will, um den Namen mit einer checkbox für jedes element von meine-Boutiquen Liste, und einen submit-button ruft meine Aktion speichern, aber mir fehlt der Struts taglib Kenntnisse zum schreiben der JSP. Können Sie mir helfen? Ich weiß, es sollte beinhalten einen logic:iterate
eine html:checkbox
und wahrscheinlich ein html:hidden
zum speichern der id, aber ich habe das Gefühl, es fehlt etwas und es ist etwas, das ich nicht verstehe. Wie sind diese miteinander verbunden, so zu sagen? Wie bekomme ich wieder eine ListeBoutiquesForm mit der aktualisierten Werte in meine Aktion speichern ?
Edit:
Folgenden Susie ' s Ratschläge, ich kam mit dem folgenden JSP:
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<html:errors/>
<html:form action="/admin/boutiqueviparis">
<input type="hidden" name="reqCode" value="sauverBoutiques" />
<table class="tableStatic noHead">
<logic:notEmpty name ="viparisListeBoutiquesForm" property="boutiques">
<logic:iterate id="boutique" name ="viparisListeBoutiquesForm" property="boutiques">
<tr>
<td>
<html:hidden name ="boutique" property="id" />
<bean:write name="boutique" property="nom" />
</td>
<td>
<html:checkbox name="boutique" property="selected" value="true" />
</td>
</tr>
</logic:iterate>
<html:submit styleClass="boutonrouge" value="Valider" onclick="this.form.reqCode.value='sauverBoutiques';return window.confirm('Modification validée');"/>
</logic:notEmpty>
</table>
</html:form>
Dies zeigt die Liste der Geschäfte und die Checkboxen, die aktiviert sind entsprechend auf den Wert von "ausgewählt" - Feld. Aber meine Aktion speichern funktioniert nicht. Hier meine Aktion speichern, wenn jemand eine Idee hat:
public ActionForward sauverBoutiques(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ViparisListeBoutiquesForm vlbf = (ViparisListeBoutiquesForm) form;
for (Boutique boutique : vlbf.getBoutiques()) {
log.debug("########## BOUTIQUE nom : "+boutique.getNom()+" selected :"+boutique.isSelected());
boutiqueService.updateBoutique(boutique);
}
request.getSession().removeAttribute("viparisListBoutiques");
return listeSites(mapping, form, request, response);
}
Ich sehen können update-Anweisungen in meinem Hibernate logs, aber nichts wird tatsächlich gespeichert. Ich loggte mich den Wert meiner selected
Feld, und tatsächlich, es ist der erste Wert, bevor ich änderte es in der dargestellten form. Irgendwie rätselhaft...
Edit:
Eigentlich die <html:checkbox name="boutique" property="selected" value="id" />
wird in der endgültigen HTML-als <input type="checkbox" name="selected" value="id">
mit "id" anstelle der id-Wert. Aber ich weiß nicht, wie man dieses Problem lösen...
InformationsquelleAutor Alexis Dufrenoy | 2013-03-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende ist etwas, das Sie tun sollten. struts-config.xml Datei, die Konfigurations-Datei, die klebt alles zusammen.
Wie Sie sehen können ich habe die Liste in myMethod() und Zugang in die jsp-Datei weiter unten.
JSP-Seite:
In meiner action-Methode der Klasse:
struts-config.xml
InformationsquelleAutor Susie
Schließlich, ich war nicht in der Struts-html:checkbox-tag an alle. Nach einigen Recherchen, es scheint, Struts 1 ist nicht Umgang mit Checkboxen sehr gut...
Das ist meine aktuelle JSP:
InformationsquelleAutor Alexis Dufrenoy