爲了確定哪些商店必須在Struts 1應用程序的前臺頁面上顯示,我必須編寫一個後臺頁面。所以我有一個商店(精品店,在代碼中)列表,包含在一個表單中。以Struts 1的形式顯示列表
形式:
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;
}
}
和保存操作:
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);
}
精品類包含 「選擇」 一個ID,一個名字和一個叫布爾值。我想用我的精品店列表中的每個元素的複選框顯示名稱,以及一個提交按鈕,用於調用我的保存操作,但我缺乏Struts taglib知識來編寫JSP。你能幫我嗎?我知道它應該涉及一個logic:iterate
,一個html:checkbox
和可能是html:hidden
來存儲身份證,但我覺得缺少某些東西,並且有些東西我不明白。那些如何聯繫在一起,這麼說呢?如何在保存操作中獲取更新值的ListeBoutiquesForm?
編輯:
繼蘇茜的意見,我想出了下面的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>
這顯示的商店和複選框,其相應檢查的值列表「選擇」字段。但我的保存操作不起作用。在這裏,我攢動,如果任何人有一個想法:
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);
}
我可以看到更新語句在我的Hibernate日誌,但沒有什麼實際保存。我記錄了我的selected
字段的值,實際上,它是初始值,然後以顯示的形式對其進行了更改。那種令人費解......
編輯:
其實,<html:checkbox name="boutique" property="selected" value="id" />
出現在最終的HTML作爲<input type="checkbox" name="selected" value="id">
,以 「ID」,而不是id的值。但我不知道如何解決這個問題...
爲什麼downvote? – 2013-03-06 21:31:53