`
visionary_2006
  • 浏览: 130849 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

doubleselect:如何数据从数据库里提取

阅读更多
今天在做PetStore时要用到doubleselect,但数据需要从数据库里提取.说说简单,做做难啊,下面,给大家看下代码:

sql1:
引用

DROP TABLE IF EXISTS `petstore`.`category`;
CREATE TABLE  `petstore`.`category` (
  `category_id` int(10) unsigned NOT NULL auto_increment COMMENT '类别ID',
  `category_name` varchar(45) character set utf8 NOT NULL COMMENT '类别名',
  `category_desc` varchar(500) character set utf8 default NULL COMMENT '详细描述',
  `category_url` varchar(100) character set utf8 default NULL COMMENT '图片URL',
  PRIMARY KEY  (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;


sql2:
引用

DROP TABLE IF EXISTS `petstore`.`product`;
CREATE TABLE  `petstore`.`product` (
  `product _id` int(10) unsigned NOT NULL auto_increment COMMENT '子类别ID',
  `product _name` varchar(45) NOT NULL COMMENT '子类别名',
  `product _desc` varchar(500) default NULL COMMENT '子类别图片URL',
  `product _url` varchar(100) default NULL COMMENT '详细描述',
  `category_id` int(10) unsigned NOT NULL COMMENT '类别ID',
  PRIMARY KEY  (`product _id`),
  KEY `FK_product_1` (`category_id`),
  CONSTRAINT `FK_product_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=gbk;


action:
package petstore.action.redirect;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import petstore.dao.CategoryDao;
import petstore.dao.ProductDao;
import petstore.model.Category;
import petstore.model.Product;

public class ItemAddRedirectAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    public static final String GLOBAL_CATEGORY = "global_category_list"; // 宠物大类列表
    public static final String GLOBAL_DOUBLE_LIST = "global_double_list"; // 宠物类列表

    private ProductDao productDao;
    private CategoryDao categoryDao;

    private List<Category> categorys;

    @SuppressWarnings("unchecked")
    private Map doubleMap = new HashMap();

    public List<Category> getCategorys() {
	return categorys;
    }

    public void setCategorys(List<Category> categorys) {
	this.categorys = categorys;
    }

    @SuppressWarnings("unchecked")
    public Map getDoubleMap() {
	return doubleMap;
    }

    @SuppressWarnings("unchecked")
    public void setDoubleMap(Map doubleMap) {
	this.doubleMap = doubleMap;
    }

    public void setProductDao(ProductDao productDao) {
	this.productDao = productDao;
    }

    public void setCategoryDao(CategoryDao categoryDao) {
	this.categoryDao = categoryDao;
    }

    @SuppressWarnings("unchecked")
    public String execute() throws Exception {
	
	//优化数据库性能
	categorys = (List) ActionContext.getContext().getSession().get(
		GLOBAL_CATEGORY);

	if (categorys == null) {
	    categorys = categoryDao.findAll();
	    ActionContext.getContext().getSession().put(GLOBAL_CATEGORY,
		    categorys);

	}

	for (int i = 0; i < categorys.size(); i++) {

	    List<Product> products = productDao
		    .findProductByCategoryId(categorys.get(i).getCategoryId());

	    List c = new LinkedList();
	    for (int j = 0; j < products.size(); j++) {

		c.add(products.get(j));
	    }
	    doubleMap.put(categorys.get(i), c);
	}
	return SUCCESS;
    }
}




jsp page:
引用

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title><s:text name="additem_page" /></title>
</head>
<body>
<s:actionerror />
<p id="title">
增加宠物
</p>
<s:form action="itemAddAction" enctype="multipart/form-data" name="itemAdd" id="itemAdd">
<s:doubleselect name="category" list="a" doubleName="product"
doubleList="b.get(top)"></s:doubleselect>
<s:submit key="submit"></s:submit><s:reset key="reset"></s:reset>
</s:form>
</body>
</html>


struts.xml:
引用

<action name="directItemAdd" class="petstore.action.redrect.ItemAddRedirectAction">
<result>/jsp/itemAdd.jsp</result>
</action>


值得注意的是jsp这里,必须在form里加上name属性,名字随意
不加上的话会出现错误:
引用

FreeMarker template error!

Expression parameters.formName is undefined on line 98, column 43 in template/simple/doubleselect.ftl.
The problematic instruction:
----------
==> ${parameters.formName} [on line 98, column 41 in template/simple/doubleselect.ftl]
in include "/${parameters.templateDir}/simple/doubleselect.ftl" [on line 25, column 1 in template/xhtml/doubleselect.ftl]
----------


第二,还必须加上id,否则当第一次打加页面时会报错,联级菜单不会正常显示,须刷新后才能正常!
分享到:
评论
3 楼 visionary_2006 2008-05-22  
值得注意的是jsp这里,必须在form里加上name属性,名字随意
不加上的话会出现错误:
2 楼 xiaomogui 2008-05-22  
我也遇到了相同的问题@@。没有解决啊。。。lz知道怎么解决了没有。。
1 楼 visionary_2006 2008-04-17  
doubleMap这里我不知道怎么放到actionContext里面去,我按上面做的话提示出错,不加的话就正确,有朋友会的指教一下,谢谢

相关推荐

    struts2中的doubleSelect标签的用法(从数据库中读取数据,HSS)

    综上所述,通过整合Hibernate、Struts2和Spring三个框架,我们可以实现从数据库中读取数据,并利用Struts2中的`doubleSelect`标签来展示数据的功能。这种技术不仅提高了开发效率,而且增强了用户体验。开发者可以...

    doubleselect.

    总的来说,“doubleselect”是数据库查询优化的一个重要手段,通过巧妙地运用子查询,我们可以有效地处理大数据量和复杂逻辑。但同时,也需要注意避免滥用和过度复杂化,以保持代码的简洁性和性能的高效性。在实际...

    doubleselect实现

    doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现...

    struts2 doubleselect标签的用法例子

    这可能涉及到数据库查询或者其他数据源的访问。然后,通过Struts2的`Result`机制,将处理后的数据返回到JSP页面。 3. **JSP页面**: 在JSP页面中,使用`&lt;s:doubleselect&gt;`标签来渲染这两个下拉列表。标签的属性...

    struts2中doubleselect标签的应用

    DAO层是数据访问对象层,负责与数据库进行交互。在这个例子中,`findByProperty`方法接收两个参数:`propertyName`(属性名)和`value`(属性值),并根据这两个参数构建SQL查询语句,然后使用Hibernate提供的`...

    struts2 标签 doubleselect动态 用法

    总之,`struts2 doubleselect`标签是构建动态级联下拉菜单的有效工具,它允许开发者通过`Action`将数据库中的层级关系展示给用户,提高用户界面的交互性。理解`list`、`listKey`、`listValue`、`doubleList`、`...

    doubleselect.doc

    &lt;h2&gt;Doubleselect缺省值selected使用数据演示: &lt;s:form name="form1"&gt; &lt;s:doubleselect label="缺省值测试" list="#{map}" name="city" value="%{defaultItem}" doublevalue="%{doubleDefaultItem}"/&gt; &lt;/s:form&gt; ...

    struts2 doubleselect 实例

    `QuestionItemAction`类作为Struts2的Action,负责从数据库获取数据并传递给视图。它有一个`List&lt;Item&gt;`类型的属性`itemList`,用于存储所有的一级数据,以及一个`Map, List&lt;Subitem&gt;&gt;`类型的属性`subitemMap`,键是...

    Struts2的doubleselect标签演示

    8. **数据交互**:在Action中,我们可能需要通过DAO层从数据库获取`firstList`和`secondList`的数据,并在Action的结果处理中,根据用户选择的`selected`值动态生成`secondList`,以便展示相关的关联数据。...

    Struts2级联doubleselect

    在级联doubleselect的例子中,可能会有两个模型对象分别代表父级和子级的数据。 3. **ValueStack**:Struts2使用ValueStack来存储Action和模型对象,使得视图可以直接访问这些对象的属性,方便数据传递。 4. **...

    j2ee-struts2-Select_DoubleSelect.rar_struts2 doubleselect

    这个标签用于生成HTML的`&lt;select&gt;`元素,它允许你动态地从服务器端获取数据并构建选项列表。基本语法如下: ```jsp &lt;s:select name="fieldName" list="listName" listKey="keyField" listValue="valueField" /&gt; ...

    struts2地市、县区二级联动下拉菜单 doubleselect标签

    在开发过程中,经常需要处理各种表单元素,其中二级联动下拉菜单是一个常见的需求,它用于展示层次结构的数据,如省份和城市,或者部门和员工等。在Struts2中,`doubleselect`标签就是为了解决这类问题而设计的。 `...

    DoubleSelect11.vue

    DoubleSelect11.vue

    两级级联下拉列表jquery插件doubleSelect.zip

    5. 如果数据源是动态获取的,可以利用Ajax从服务器获取数据,然后使用插件提供的方法更新下拉列表。 在实际应用中,你可能需要根据项目需求对插件进行一些定制,比如自定义样式、添加错误处理机制、优化性能等。...

    Struts2-Double-Select-Example

    在这个方法中,你可以根据`parentId`的值从数据库或其他数据源获取子级选项,并设置到Action的属性`childOptions`上。 5. **处理结果**:在Action的`execute`方法中,你可以检查`parentId`的值是否改变,如果改变,...

    struts的三级级联

    在Action中,你可以模拟数据库查询,创建并填充这些对象,然后返回到JSP页面供`doubleselect`使用。 总的来说,Struts2的`doubleselect`标签提供了便捷的方式来处理级联选择,使得用户可以在两个相互关联的列表中...

    ssh 框架技术

    - **下载**:从官方网站或Maven仓库下载Struts2框架。 - **目录结构**:包括lib目录存放jar包,docs目录存放文档等。 ##### 6. 第一个Struts2程序 - **环境搭建**:安装Java环境,配置Eclipse或其他IDE。 - **创建...

    extjs+struts2省市区三级联动完整示例

    每个combo都需要配置数据源,通常是一个远程URL,通过Ajax请求获取数据。当用户在一个combo中选择一项时,触发事件更新其他两个combo的数据源。 2. **配置Struts2 Action**: 在服务器端,我们需要创建一个Struts2...

    Struts2标签列表及说明

    * &lt;s:doubleselect&gt;:双下拉框 E: * &lt;s:if&gt;:条件判断 * &lt;s:elseif&gt;:条件判断 * &lt;s:else&gt;:条件判断 F: * &lt;s:fielderror&gt;:显示文件错误信息 * &lt;s:file&gt;:文件上传 * &lt;s:form&gt;:获取相应 form 的值 G: * ...

Global site tag (gtag.js) - Google Analytics