移动商城第八篇【添加商品之基本属性和大字段数据(FCK文本编辑器)】
2017-09-11 18:23
417 查看
添加商品
修改对应的超链接url,controller转发到对应的JSP页面<a href="${path}/item/toAddItem.do" class="btn80x20" title="添加商品">添加商品</a>
/** * 跳转到添加商品页面 * @return */ @RequestMapping("/toAddItem.do") public String toAddItem() { return "item/addItem"; }
我们发现添加商品页面是由4个选项卡组成:
基本信息
在基本信息的选项卡中,还是需要我们查询所有的品牌数据,在页面上给用户选择:<select id="brandId" name="brandId"> <option value="">请选择</option> <c:forEach items="${ebBrands }" var="brand"> <option value="${brand.brandId }">${brand.brandName }</option> </c:forEach> </select>
上传文件
我们在添加品牌的时候已经做过了上传文件的功能了,逻辑大致是一样的,我们拿过来修改一些东西即可!在表单form标签中,记得要使用以下的数据类型进行表单提交!
enctype="multipart/form-data"
修改对应的name名称
<p><label></label><input type='file' size='27' id='imgsFile' name='imgsFile' class="file" onchange='submitUpload()'/><span id="submitImgTip" class="pos">请上传图片宽为120px,高为50px,大小不超过100K。</span> <input type='hidden' id='imgs' name='imgs' value='' reg2="^.+$" tip="亲!您忘记上传图片了。"/> <span></span> </p>
Jquery代码:
function submitUpload() { var opt = { //重新指定form的action的值 url: "${path}/upload/uploadPic.do", type: "post", dateType: "json", success: function (responseText) { var jsonObj = $.parseJSON(responseText.replace(/<.*?>/ig, "")); $("#imgsImgSrc").attr("src", jsonObj.realPath); $("#imgs").val(jsonObj.relativePath); }, error: function () { alert("系统错误"); } }; $("#form111").ajaxSubmit(opt); }
添加基本属性测试
到目前位置,我们的Controller可以拿到Item页面全部的基本属性:商品基本属性中的隐藏属性
商品的id是使用oracle中的序列进行自动增长。/*对于商品的id,我们是自增长的。*/ <selectKey keyProperty="itemId" order="BEFORE" resultType="long"> select seqitemid.nextval from dual </selectKey>
对于审核状态,默认设置为0【待审核】
对于上架状态,默认设置为1【下架】
对于销售量,默认设置为0【并没有人购买】
在Mapper中把对应的属性设置默认值。
(#{itemId,jdbcType=DECIMAL}, #{itemName,jdbcType=VARCHAR}, #{itemNo,jdbcType=VARCHAR}, #{brandId,jdbcType=DECIMAL}, #{catId,jdbcType=DECIMAL}, #{tagImgId,jdbcType=DECIMAL}, #{tagImg,jdbcType=DECIMAL}, #{isNew,jdbcType=DECIMAL}, #{isGood,jdbcType=DECIMAL}, #{isHot,jdbcType=DECIMAL}, #{promotion,jdbcType=VARCHAR}, 0, 1, #{imgs,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, #{pageDesc,jdbcType=VARCHAR}, #{itemRecycle,jdbcType=DECIMAL}, #{onSaleTime,jdbcType=TIMESTAMP}, #{checkTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{updateUserId,jdbcType=DECIMAL}, sysdate, #{checkerUserId,jdbcType=DECIMAL}, #{fullPathDeploy,jdbcType=VARCHAR}, #{fullPathDeployOffer,jdbcType=VARCHAR}, #{originalItemId,jdbcType=DECIMAL}, #{lastStatus,jdbcType=DECIMAL}, #{merchantId,jdbcType=DECIMAL}, #{itemSort,jdbcType=DECIMAL}, 0, #{createUserId,jdbcType=DECIMAL}, #{simLevel,jdbcType=DECIMAL}, #{giftDesc,jdbcType=VARCHAR}, #{giftImg,jdbcType=VARCHAR}, #{giftShowType,jdbcType=VARCHAR}, #{imgSize1,jdbcType=VARCHAR} )
大字段数据
我们第二个选项卡的原型界面如下:我们需要用到另外一张表:
因此我们需要逆向工程对应的表:
<table schema="" tableName="EB_ITEM_CLOB" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" >
加载对应的映射文件:
Dao层
id是EbItemClob无法从页面上获取的,因此我们需要传递进去。@Repository public class EbItemClobDaoImpl extends SqlSessionDaoSupport implements EbItemClobDao { String nameSpace = "com.rl.ecps.sqlMap.sqlMap.EbItemClobMapper."; public void saveItemClob(EbItemClob ebItemClob, Long itemId) { ebItemClob.setItemId(itemId); this.getSqlSession().insert(nameSpace + "insert", ebItemClob); } }
fckEditor文本编辑器
其实就是一个文本域,而该文本域是能带有格式的。以前我们使用过“富文本编辑器”就是这么的一种,这次我们使用fckEditor文本编辑器首先,把我们的下载下来的文档加入到web目录下。
引入核心的JS文件
<script type="text/javascript" src="<c:url value='/${system }/res/plugins/fckeditor/fckeditor.js'/>"></script>
创建出FCK对象,设置相关属性:
var fck = new FCKeditor("itemDesc"); fck.BasePath = "${path}/ecps/console/res/plugins/fckeditor/"; fck.Config["ImageUploadURL"] = "${path}/upload/uploadForFck.do?typeStr=Image"; fck.Height = 400; fck.ToolbarSet = "Default"; fck.ReplaceTextarea();
itemDesc就是我们文档域的id值:
<textarea name="itemDesc" id="itemDesc"></textarea>
创建出处理uploadForFck.do的方法:
需要使用到工具类UploadResponse
@RequestMapping("/uploadForFck.do") public void uploadForFck(HttpServletRequest request, HttpServletResponse response) throws IOException { //把request转换成复杂request MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request; //获得文件 Map<String, MultipartFile> map = mr.getFileMap(); Set<String> set = map.keySet(); Iterator<String> it = set.iterator(); String fileInputName = it.next(); MultipartFile imgsFile = map.get(fileInputName); //上传文件的名字是不能相同的,因此我们设置一下文件的名称 String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); Random random = new Random(); for(int i = 0; i < 3; i++){ fileName = fileName + random.nextInt(10); } //拿到该文件的原始名称 String originalFilename = imgsFile.getOriginalFilename(); //获取该文件的后缀 String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); /*** * 绝对路径是留给页面src属性做显示的 * 相对路径是保存在数据库中,通过input来进行提交的。 */ //获得上传文件的绝对路径 String realPath = ResourcesUtils.readProp("file_path")+"/upload/"+fileName+suffix; //获得相对路径 String relativePath = "/upload/"+fileName+suffix; //创建jersy的客户端 Client client = Client.create(); //创建web资源对象 WebResource wr = client.resource(realPath); //拿到文件的二进制数据,使用web资源对象上传 byte[] bytes = imgsFile.getBytes(); wr.put(bytes); /** * 在FCK中,我们就不再是使用JSON来返回了,我们使用的是内部的对象 */ UploadResponse ur = new UploadResponse(UploadResponse.EN_OK,realPath); response.getWriter().print(ur); }
在controller中使用EbItemClob对象,即可接收我们的大字段数据!
@RequestMapping("/addItem.do") public void addItem(EbItem ebItem, EbItemClob ebItemClob) { }
相关文章推荐
- 移动商城第八篇【添加商品之基本属性和大字段数据(FCK文本编辑器)】
- 分类信息,商城商品自定义属性设计,数据入库,检索规则
- 给category添加基本数据类型属性
- 使用 SELECT 语句从表中取数据 创建新表 字段属性 向表中添加数据 删除
- 移动商城第六篇【分析商品的数据模型】
- 地磅称量系统之(37~39) 直接向数据库的数据表WtBill添加测试数据以及绑定用户控件和使用编码的方式控制dataGridView控件的每列属性和添加数据数据库的表中不存在的字段(非绑定列)
- 使用mybatis,在添加数据的时候返回主键,当查询count和属性字段怎么接收返回数据
- 移动商城第九篇【属性选项卡、最小存储单元、数据进库】
- ebay商品基本属性组合成数据表格式,可用上传到系统递交数据
- List添加Item时, 如何去判断某个字段, 并且保证字段数据不重复性
- 查找SQL数据表或视图中的字段属性信息
- MySQL数据类型和常用字段属性总结
- 【SSH网上商城项目实战10】商品类基本模块的搭建
- PB数据窗口中用Enter 代替Tab在字段间移动,移动到最后一列弹出保存提示
- WSS 扩展文件夹的属性--如何给文件夹添加扩展字段
- 动手实现扩展属性为对象动态添加获取数据(续)
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- PB数据窗口对象之字段属性和计算域属性
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据