spring的portlet改进(二)支持CURD标注controller

spring的portlet改进(二)支持CURD标注controller

controller层标注应用的后台是manager层,这层只做了简单的MOCK,代码如下,
接口文件AddressManager.java
package com.sillycat.easyportlet.services;
import java.util.List;
import com.sillycat.easyportlet.model.Address;
public interface AddressManager {
public Address get(Integer id);
public List<Address> list();
public void delete(Integer id);
public void create(Address address);
public void update(Address address);
}
实现文件AddressManagerImpl.java:
package com.sillycat.easyportlet.services.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.sillycat.easyportlet.model.Address;
import com.sillycat.easyportlet.services.AddressManager;
public class AddressManagerImpl implements AddressManager {
public Map<Integer, Address> map = new HashMap<Integer, Address>();
public Address get(Integer id) {
   Address a = null;
   if (map != null && !map.isEmpty()) {
    a = map.get(id);
   }
   return a;
}
public List<Address> list() {
   List<Address> list = null;
   if (map != null && !map.isEmpty()) {
    list = new ArrayList<Address>(map.size());
    Iterator<Integer> itkey = map.keySet().iterator();
    for (; itkey.hasNext();) {
     Integer id = itkey.next();
     list.add(map.get(id));
    }
   }
   return list;
}
public void create(Address address) {
   Date d = new Date();
   address.setId((new Long(d.getTime()).intValue()));
   map.put(address.getId(), address);
}
public void update(Address address) {
   if (map != null && !map.isEmpty()) {
    if (map.containsKey(address.getId())) {
     map.put(address.getId(), address);
    }
   }
}
public void delete(Integer id) {
   if (map != null && !map.isEmpty()) {
    if (map.containsKey(id)) {
     map.remove(id);
    }
   }
}
}
这些方法都没有什么特别,和平时的MANAGER一致。POJO
package com.sillycat.easyportlet.model;
import java.io.Serializable;
public class Address implements Serializable {
private static final long serialVersionUID = 5306372860419718840L;
private Integer id;
private String name;
private String address;
private String telphone;
private String mobile;
private String email;
...getter 和setter
}
页面撰写,调用不同的模式,实现编辑模式的CRUD,VIEW模式的LIST和VIEW
首先引入WEB-INF/portlets/easyportlet/taglibs.jsp
<%@ taglib prefix="c"       uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form"    uri="http://www.springframework.org/tags/form" %>
新增页面addressAdd.jsp
<%@ include file="taglibs.jsp" %>
<h1>Add Address</h1>
<portlet:actionURL var="formAction" portletMode="edit">
    <portlet:param name="action" value="save"/>
</portlet:actionURL>                      
<form:form modelAttribute="address" method="post" action="${formAction}">
    <form:errors path="*" cssStyle="color:red"/>
    <form:hidden path="id" />
    <table>
     <tr>
         <td>名字: </td>
         <td><form:input path="name" size="20" maxlength="20" /></td>
     </tr>
     <tr>
         <td>地址: </td>
         <td><form:input path="address" size="20" maxlength="255"/></td>
     </tr>
     <tr>
         <td>座机: </td>
         <td><form:input path="telphone" size="20" maxlength="255"/></td>
     </tr>
     <tr>
         <td>手机: </td>
         <td><form:input path="mobile" size="20" maxlength="255"/></td>
     </tr>
     <tr>
         <td>邮箱: </td>
         <td><form:input path="email" size="20" maxlength="255"/></td>
     </tr>
</table>
<button type="submit">提交</button>
</form:form>
编辑页面addressEdit.jsp
<%@ include file="taglibs.jsp" %>
<h1>Add Address</h1>
<portlet:actionURL var="formAction" portletMode="edit">
    <portlet:param name="action" value="save"/>
</portlet:actionURL>                  
<form:form modelAttribute="address" method="post" action="${formAction}">
    <form:errors path="*" cssStyle="color:red"/>
    <form:hidden path="id" />
    <table>
     <tr>
         <td>名字: </td>
         <td><form:input path="name" size="20" maxlength="20" /></td>
     </tr>
     <tr>
         <td>地址: </td>
         <td><form:input path="address" size="20" maxlength="255"/></td>
     </tr>
     <tr>
         <td>座机: </td>
         <td><form:input path="telphone" size="20" maxlength="255"/></td>
     </tr>
     <tr>
         <td>手机: </td>
         <td><form:input path="mobile" size="20" maxlength="255"/></td>
     </tr>
     <tr>
         <td>邮箱: </td>
         <td><form:input path="email" size="20" maxlength="255"/></td>
     </tr>
</table>
<button type="submit">提交</button>
</form:form>
EDIT模式的列表页面addressList.jsp
<%@ include file="taglibs.jsp" %>

<h1>Address</h1>

<form method="post" action="<portlet:actionURL/>">
<c:forEach items="${addresses}" var="item">
   <c:out value="${item.id}"/>
   <c:out value="${item.name}" />
   <c:out value="${item.address}" />
   <c:out value="${item.telphone}" />
   <c:out value="${item.mobile}" />
   <c:out value="${item.email}" />
   <a href="<portlet:actionURL portletMode="edit">
           <portlet:param name="action" value="delete"/>
           <portlet:param name="id">
               <jsp:attribute name="value">
                   <c:out value="${item.id}"/>
               </jsp:attribute>
           </portlet:param>
        </portlet:actionURL>">
    删除</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
   <a href="<portlet:renderURL portletMode="edit">
           <portlet:param name="action" value="edit"/>
           <portlet:param name="id">
               <jsp:attribute name="value">
                   <c:out value="${item.id}"/>
               </jsp:attribute>
           </portlet:param>
        </portlet:renderURL>">
    编辑</a>
   <br/>
</c:forEach>
<br/>
</form>
<br/>
<a href="<portlet:renderURL portletMode="edit">
         <portlet:param name="action" value="add"/>
      </portlet:renderURL>">
新增</a>
| 返回
<a href="<portlet:renderURL portletMode="view"/>">
查看模式
</a>
VIEW模式的列表页面addressListView.jsp
<%@ include file="taglibs.jsp" %>

<h1>Address</h1>

<form method="post" action="<portlet:actionURL/>">

<c:choose>
   <c:when test="${empty addresses}">
    <p>
      当前没有地址记录
    </p>
   </c:when>
   <c:otherwise>
     <c:forEach items="${addresses}" var="item">
      <c:out value="${item.id}"/>
      <c:out value="${item.name}" />
      <c:out value="${item.address}" />
      <c:out value="${item.telphone}" />
      <c:out value="${item.mobile}" />
      <c:out value="${item.email}" />
   <a href="<portlet:renderURL portletMode="view">
           <portlet:param name="action" value="view"/>
           <portlet:param name="id">
               <jsp:attribute name="value">
                   <c:out value="${item.id}"/>
               </jsp:attribute>
           </portlet:param>
        </portlet:renderURL>">
    查看</a>
     <br />
     </c:forEach>
    <br/>
   </c:otherwise>
</c:choose>
</form>
<br/>
<a href="<portlet:renderURL portletMode="edit"/>">
编辑模式
</a>
VIEW模式的查看页面addressView.jsp
<%@ include file="taglibs.jsp"%>

<h1>Add Address</h1>

<table>
<tr>
   <td>序号:</td>
   <td><c:out value="${address.id}" /></td>
</tr>
<tr>
   <td>名字:</td>
   <td><c:out value="${address.name}" /></td>
</tr>
<tr>
   <td>地址:</td>
   <td><c:out value="${address.address}" /></td>
</tr>
<tr>
   <td>座机:</td>
   <td><c:out value="${address.telphone}" /></td>
</tr>
<tr>
   <td>手机:</td>
   <td><c:out value="${address.mobile}" /></td>
</tr>
<tr>
   <td>邮箱:</td>
   <td><c:out value="${address.email}" /></td>
</tr>
</table>
<a href="<portlet:renderURL portletMode="view"/>">
返回
</a>
另外几个jsp,比如error.jsp,unaailable.jsp是在出现异常的时候调用的。

你可能感兴趣的:(java,spring,jsp,mobile,sun)