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...

Wieso der downvote?

InformationsquelleAutor Alexis Dufrenoy | 2013-03-05

Schreibe einen Kommentar