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}>><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 }"> ${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做的。