`
gg19861207
  • 浏览: 179799 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个实现导航功能的组合(Service+action+html)

阅读更多

select_productType.jsp:

 

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/page/share/taglib.jsp" %>
<html>
<head>
<title> 类别选择 </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="/css/vip.css" type="text/css">
<SCRIPT language=JavaScript src="/js/FoshanRen.js"></SCRIPT>
<SCRIPT language=JavaScript src="/js/xmlhttp.js"></SCRIPT>

<SCRIPT language=JavaScript>
 function getDicName(typeid,name){
  var form = document.forms[0];
  form.dicId.value = typeid;
  form.dicName.value = name;
 }
 
 function checkIt(){
  var form = document.forms[0];
  var parform = opener.document.forms[0];
  if(parform){
   parform.typeid.value = form.dicId.value;
   parform.v_type_name.value = form.dicName.value;
  }
  
 }

</SCRIPT>
<style>
<!--
.inputText{
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 12px;
 color: #666666;
 border: 1px solid #999999;
}
body {
 font-family: Georgia, "Times New Roman", Times, serif;
 font-size: 12px;
 color: #666666;
}
-->
</style>
</head>

<body>
<c:set var="menuout" value=""/>

<c:forEach items="${gps}" var="gptype">
 <c:set var="menuout" value="${menuout}&gt;&gt;<a href='/baba1.1/control/product/manage.do?method=selectUI&typeid=${gptype.typeid }'>${gptype.name }</a>"></c:set>
</c:forEach>
产品类别列表,请选择分类:<br>
导航:<a href="<html:rewrite action='/control/product/manage'/>?method=selectUI">顶级目录</a>
<c:out value="${menuout }" escapeXml="false"></c:out>
<form action="" name="main" method="post">
<input type="hidden" name="dicId"/>
<input type="hidden" name="dicName"/>
<table width="100%" border="0" cellspacing="1" cellpadding="1">
 <tr>
 <c:forEach items="${types}" var="type" varStatus="loop">  
     <c:if test="${fn:length(type.childtypes) > 0}">
      <td>
       <a href="<html:rewrite action='/control/product/manage'/>?method=selectUI&typeid=${type.typeid }">&nbsp;${type.name }</a>
      </td>
     </c:if>
      <c:if test="${fn:length(type.childtypes) == 0}">
       <td>
     <input type="radio" onclick="javascript:getDicName('${type.typeid }','${type.name }')"/>${type.name}
   </td>
     </c:if>
    
  <c:if test="${loop.count%5 == 0}">
    </tr><tr>
  </c:if>
  
 </c:forEach>
</tr>
<br/>
</table>
    <tr><td colspan="2" align="center">
  <input type='button' name='create' value=" 确 认 " onClick="javascript:checkIt()">
  <input type='button' name="cancel" onClick="javaScript:window.close()" value=" 取 消 ">
    </td></tr>
 </form>

 

</body>
</html>

 

 

 

对应的Action中的selectUI()方法:

public ActionForward selectUI(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  ProductForm formbean = (ProductForm)form;
  Integer typeid = formbean.getTypeid();
  String wherejpql = "o.parent is null and o.visible = true";
  //因为queryParams不一定存在,所以要用new Object[0]这种方式创建一个Object数组
  Object[] queryParams = null;
  if(typeid!= null && typeid>0){
   wherejpql = "o.parent.id = ?1";
   queryParams = new Object[]{typeid};
   /**
    * 通过typeid得到相应的产品类型的父类型,父类型的父类型,....,用来为实现导航菜单提供数据
    */
   List<ProductType> gps = new ArrayList<ProductType>();
   ProductType type = productTypeService.find(ProductType.class, typeid);
   ProductType parent = type.getParent();
   gps.add(type);
   while(parent != null){
    gps.add(0,parent);
    parent = parent.getParent();
   }
   request.setAttribute("gps", gps);
  }
  
  /**
   * 通过typeid得到相应的产品类型A的所有子类型,用来显示该产品类型A下拥有哪些类型
   */
  List<ProductType> childtypes = productTypeService.getScrollData(ProductType.class, wherejpql, queryParams).getResultList();
  //System.out.println("----------in ProductInfoManageActio------------childtypes'length is:" + childtypes.size());
  request.setAttribute("types", childtypes);
  return mapping.findForward("selectUI");
 }
 

 

service一层就不用写了,很简单,用JPA做的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics