削除処理

変更と同じように一覧でItemnのcodeをhiddenで渡してActionを呼び出します。

    <s:if test="#session['user'].delete_priv == true"> 
    <td>
      <s:form action="Delete_select">
        <s:hidden name="code"/>
        <s:submit key="button.delete"/>
      </s:form>
    </td>
    </s:if>    

削除のJSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><s:text name="title.delete"/></title>
</head>
<body>
	<table>
		<tr>
		<td><s:text name="label.ganre"></s:text></td>
		<td><s:property value="item.ganreCodeName"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.media"></s:text></td>
		<td><s:property value="item.mediaCodeName"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.topChar"></s:text></td>
		<td><s:property value="item.topChar"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.artist"></s:text></td>
		<td><s:property value="item.artist"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.title"></s:text></td>
		<td><s:property value="item.title"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.year"></s:text></td>
		<td><s:property value="item.year"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.place"></s:text></td>
		<td><s:property value="item.placeCodeName"></s:property></td>
		</tr>
		<tr>
		<td><s:text name="label.owner"></s:text></td>
		<td><s:property value="item.ownerCodeName"></s:property></td>
		</tr>		

		<tr>
		<td>
		<s:form action="Delete_execute">
			<s:hidden name="item.code"/>
			<s:submit key="button.delete"></s:submit>
		</s:form>
		</td>
		<td>
		<% int pageNumber = (Integer)session.getAttribute("currentPage");
		   out.print("<form action=\"MovePage.action?page=" + pageNumber + "\"" + "method=\"post\"" + ">");
		   out.print("<input type=\"submit\" value=\"戻る\"/>");
		   out.print("</form>");
		   %>
		</td>
		</tr>	
	</table>
</body>
</html>

削除のActionではcodeに該当するItemをDBから削除し、再度SubListを抜き出して、一覧表示JSPに遷移します。

	@Action(
			value = "/Delete_execute",
			results = {
				@Result(name = "execute", location = "/WEB-INF/form/retrieveResultForm.jsp" )
			}
		)		
		public String execute() throws Exception {
		int deletedNumber = iService.deleteItem(item.getCode());
		HttpServletRequest request = ServletActionContext.getRequest();
		rdManager.deleteItemInList(request, item);
		return "execute";
	}

deleteItemメソッド

	@Override
	public void deleteItemInList(HttpServletRequest request, Item item) {
		HttpSession session = request.getSession();
		List<Item> subList = (List<Item>) session.getAttribute("items");
		int i = 0;
		for(Item delItem: subList) {
			if(delItem.getCode() == item.getCode()) {
				subList.remove(i);
				break;
			}
			i++;
		}
		int currentPage = (Integer)request.getSession().getAttribute("currentPage");
		getRetrieveSubList(request, currentPage);
	}