最近在做一个电子商务网站(
http://www.legendesign.net/
),暂时叫
LegendShop吧,网站支持多个商家发布产品,类似
于淘宝等商城,不同点在于
LegendShop的整个界面内容是可以自定义的,没有任何植入式的主网站的广告。
产品有一些固定属性,但是每个商家所销售的产品是不一样的,例如卖家具的有大小,颜色等,卖家电的有大小,品牌等。因此要为每个产品增加动态属性,商家在
建立产品的时候可以自定义该产品的属性。
思路是每个产品对应
0..n个动态属性,每个属性有
0..n个选项。
为了满足需求上要求,有些属性要求客户是直接填写的,有些是多选项,有些是要单选的。因此设计了
4中属性类型
Select(选择框)
, Text(文本框)
,
Radio(单选框)
, CheckBox(多选框)。
方法一:可以将以上实体定义为一个数据库表,每次读取产品的时候再装载动态属性,需要做表关联。此方法需要增加
2张表,但方便于采用
SQL做数据统计。
但每个产品都建立一次动态属性显然是没有必要而且很麻烦,因为相关的产品的动态属性是一致的,没有必要重复创建。
为了用户更容易增加动态属性,最好增加一个动态属性的模板,每次新建产品的时候直接指定采用那一个属性模板,但是模板一旦使用则不能轻易删除,否则动态属性就不见了。另外客户在订购的时候将填写或者选择这些动态属性,并将结果存入产品订购表。
方法二:采用对象数据库的方式,将动态属性以对象形式存到产品表中。此法不需要新建产品属性表和属性选项表,查询产品的时候可以直接把动态属性查询出来,但需要自己动手将对象和页面功能对应起来。
该字段可以直接存放
Java的对象,或者将对象转化为
JSON对象或者
XML再行存放。
如果采用
Oracle的话,那需要采用
BLOB的字段来存放对象,或者采用
CLOB来存放
JSON和
XML。下面用代码来展示如何实现方法二的。
属性类型定义:
public
enum
ModelType
{
Select
,
Text
,
Radio
,
CheckBox
;
}
属性定义:
public
class
Model
implements
Serializable {
private
String
id
;
/**
* may by select text radio checkbox
*/
private
ModelType
type
;
private
Item[]
items
; //
属性选项
选项定义:
public
class
Item
implements
Serializable {
private
boolean
nullEnabled
=
false
;
private
boolean
selected
=
false
;
private
String
key
=
null
; //
后台定义的选项关键字
private
String
value
=
null
; //
用户输入的属性值
界面说明:后台可以自定义上面提到的
4种属性类型。点击提交的时候通过
JSON将属性数组保存为产品表中的属性。当客户浏览产品的时候可以看到后台动态属性的定义,当然客户是不知道这些属性是动态增加的还是固定的。他们订购的时候选择对应的选项再提交,如果需要对选项做
validate的话,那在
Item中增加
needValidate属性,再页面中再行判断。
提交之后以
JSON方式交给
DWR处理,直接得到
Model[]数组。或者采用
DOM的方式得到
XML传到后台的
controller进行处理。下面的例子是采用
JSON的方式实现的。具体看附件。
DWR的配置文件,否则不能通过
DWR来传输对象。
<
dwr:configuration
>
<
dwr:init
>
<
dwr:converter
id
=
"date"
class
=
"bingo.vasms.bizstreet.dwr.CalendarConverter"
/>
</
dwr:init
>
<
dwr:convert
type
=
"date"
class
=
"java.util.Calendar"
></
dwr:convert
>
<
dwr:convert
type
=
"bean"
class
=
"com.done.entity.Model"
></
dwr:convert
>
<
dwr:convert
type
=
"bean"
class
=
"com.done.entity.Item"
></
dwr:convert
>
<
dwr:convert
type
=
"enum"
class
=
"com.done.entity.ModelType"
></
dwr:convert
>
</
dwr:configuration
>
- 大小: 6.6 KB
- 大小: 23.1 KB
分享到:
相关推荐
在IT行业中,商品属性是电子商务系统中至关重要的组成部分,它定义了产品的具体特征,帮助消费者做出购买决策。本文将深入探讨“商品属性增加及修改”的主题,主要关注如何通过前端技术实现这一功能,而不涉及后端...
jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理、动画以及Ajax交互,使得开发者可以更加高效地构建动态网页。 首先,要实现产品展示的切换效果,我们可以利用jQuery的`$(selector).click()`...
近期的研究发现了一些反直觉的模式,这些模式挑战了关于随时间变化的网络基本结构属性的传统假设。通过对这些模式的分析,研究人员提出了克罗内克图生成模型(Kronecker Graph Model),用以解释支配网络演化的内在...
而消费者在购买产品时,更关注的是产品的外观、安全性、口感等基本属性。国内企业在技术创新、产品开发、市场推广和品牌建设方面虽取得了长足进步,但其营销战略仍停留在较低的层次,缺乏对竞争对手深入的分析和应对...
11. **Alt标签中出现关键词**:alt属性提供图片的文字描述,对于无法查看图片的用户或搜索引擎来说至关重要。 12. **comment中出现关键词**:虽然不是决定性的因素,评论中的关键词可能会被搜索引擎用来评估页面内容...
- `<dl class="J_TWidget hidden" data-widget-config="..." data-widget-type="Popup">`,这个弹窗用于显示更多关于产品的信息(如价格、销售数量等)。 - `<h2><strong>ȫCSSȫ...</strong><span><em>37.00Ԫۣ...
- 可能涉及到的企业宣传网站的数据库设计可能包括公司介绍、产品信息、新闻动态等表,每个表都有相应的字段存储数据。 7. **文件组织结构**: - 项目通常有明确的目录结构,如WEB-INF目录下存放web.xml配置文件,...
固有特性指产品或服务与生俱来的属性,例如材料的强度、产品的纯度等;而赋予特性则是在固有特性的基础上,经过人为因素作用而形成的特性,例如产品的价格、交货时间等。企业要在生产和服务过程中,既要维护固有特性...
本文将基于“Proe扭转弹簧运动仿真做法教程.pdf”这一资料,深入探讨如何在ProE中实现扭转弹簧的运动仿真,为读者提供一种参考思路。 ### 一、ProE中的弹簧仿真基础 在ProE的机构仿真模块中,虽然提供了压簧和拉簧...
通常的做法是将算法编写为一个动态链接库(.DLL文件),然后将其放置于烧录器软件指定的目录下。 以SmartPRO2008为例,具体的步骤如下: 1. **实现序列号接口**:根据烧录器厂商提供的API文档,实现序列号生成的...
JSP(Java Server Pages)是一种动态网页开发技术,能够让开发者将Java代码嵌入到HTML页面中。...这一点对于开发需要频繁更新数据的应用非常有用,例如,新闻网站、电子商务产品展示以及社交媒体平台的动态内容展示等。
这种做法可以提高页面加载速度,同时对搜索引擎优化(SEO)也十分有利。 首先,我们需要了解HTML(HyperText Markup Language)的基础知识。HTML是网页内容的结构框架,定义了网页的基本元素,如标题、段落、图片、...
在网页设计中,小广告是一种常见的元素,它们通常被用于推广产品或服务。"随着滚动条,小广告也滚动的做法"这个主题涉及到的是如何通过CSS和DOM操作来实现广告元素随页面滚动的效果,这种效果也被称为"固定定位"或者...
在C#编程中,动态加载组件是一种常见的技术,它允许程序在运行时根据需要加载和执行代码模块,而不是...通过适当修改加载代码,结合VS IDE的特性,可以实现动态加载组件的调试,这对于提升开发体验和产品质量至关重要。
此外,`rel="nofollow"`属性在产品链接中使用,这是SEO优化的一种常见做法,告诉搜索引擎不要追踪这些链接,以免影响网站的权重分配。 ### 总结 Magento的订单展示功能体现了其作为高级电子商务平台的强大之处,...
6. **产品展示**:产品列表通常采用网格系统,使用CSS的float或display属性来实现多列布局。每个产品项应包含图片、标题、价格和购买按钮。CSS动画可以增强用户体验,如滑动展示、淡入淡出效果。 7. **购物车和结账...
风控指标的控制机制参照了证券公司和期货公司的做法,强调专户子公司的董事长承担风险控制的最终责任,通过动态监控、敏感性分析和压力测试等手段,提高风险管理水平,确保风险控制指标的有效执行。 综上所述,这一...
3. 它是从用户的角度而不是从开发者的角度描述软件产品的需求,分析产品所需的功能和动态行为; 4. 它是由软件需求到最终实现的第一步,它驱动了需求分析之后的各阶段的开发工作; 参与者(Actor)是指系统以外的,...
这可以通过RowDataBound事件实现,根据条件动态设置行的BackColor属性。 #### 二十二、设置数据行的事件 为数据行添加事件处理程序可以增强交互性。例如,可以在RowCommand事件中处理行级别的操作。 #### 二十三...