1、前台js保存

<script type="text/javascript"  src="/ecloud/js/js/jquery.min.js"></script>

<script type="text/javascript">
$(function(){
//发送验证码
$("#saveButton").click(function(){
var templateName = $("#templateName").val();
if(templateName == ""){
alert("请输入模板名称");
return;
}
$.ajax({
url:"control/PrintTemplateSaveServlet",
data:{
guid:$("#tId").val(),
planId:$("#planId").val(),
userId:$("#userId").val(),
templateName:$("#templateName").val(),
templateContent:$("#print_content").html(),
width:$("#template_width").val(),
height:$("#template_height").val()
/* ,
templateStyle:$("#print_style").html() */
},
type:"post",
async:false,
dataType:"json",
success : function(data) {
if(data.result == 'success'){
alert("操作成功");
} else if(data.result == 'nameError') {
alert("模板名称已存在");
} else {
alert("操作失败");
}
}, });
});
});
</script>

2、controller配置

<request-map uri="PrintTemplateSaveServlet">
<security https="false" auth="false"/>
<event type="service" invoke="addPrintTemplateButton"/>
<response name="success" type="request" value="json"/>
<response name="error" type="request" value="json"/>
<response name="nameError" type="request" value="json"/>
</request-map>

3、service配置

<service name="addPrintTemplateButton" engine="java"
location="org.eheluo.ecloud.view.certificate.certificatePrint.PrintTemplateServlet" invoke="addPrintTemplateButton">
<attribute name="guid" mode="IN" type="String" optional="true"/>
<attribute name="planId" mode="IN" type="String" optional="true"/>
<attribute name="userId" mode="IN" type="String" optional="true"/>
<attribute name="templateName" mode="IN" type="String" optional="true"/>
<attribute name="templateContent" mode="IN" type="String" allow-html="any" optional="true"/>
<attribute name="width" mode="IN" type="Integer" optional="true"/>
<attribute name="height" mode="IN" type="Integer" optional="true"/>
<!-- <attribute name="templateStyle" mode="IN" type="String" allow-html="any" optional="true"/> -->
<attribute name="result" mode="OUT" type="String"/>
</service>

3、service保存方法

/**
* 保存模板
* @param ctx
* @param context
* @return
*/
public Map<String, Object> addPrintTemplateButton(DispatchContext ctx, Map<String, ?> context) {
String guid = (String) context.get("guid");
String planId = (String) context.get("planId");
String userId = (String) context.get("userId");
String templateName = (String) context.get("templateName");
String templateContent = (String) context.get("templateContent");
Integer width = (Integer) context.get("width");
Integer height = (Integer) context.get("height");
// String templateStyle = (String) context.get("templateStyle"); List<EntityCondition> ec = FastList.newInstance();
ec.add(EntityCondition.makeCondition("planGuid", EntityOperator.EQUALS, planId));
// ec.add(EntityCondition.makeCondition("userId", EntityOperator.EQUALS, planId));
ec.add(EntityCondition.makeCondition("templateName", EntityOperator.EQUALS, templateName)); // Map createNewsCtx = UtilMisc.toMap("planGuid", planId);
// createNewsCtx.put("userId", userId);
// createNewsCtx.put("templateName", templateName);
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
// long count = base.getDelegator().findCountByCondition("CertificatePrintTemplate", ec.size() > 0 ? EntityCondition.makeCondition(ec, EntityOperator.AND) : null, null, null);
List<GenericValue> gvList = base.getDelegator().findList("CertificatePrintTemplate", ec.size() > 0 ? EntityCondition.makeCondition(ec, EntityOperator.AND) : null, null, null, null, false);
if (gvList != null && gvList.size() > 0 && !gvList.get(0).getString("guid").equals(guid)) {
resultMap.put("result", "nameError");
} else {
Map createNewsCtx = UtilMisc.toMap("userLoginId", userId);
GenericValue userLogin = base.getDelegator().findOne("UserLogin", createNewsCtx, false);
String name = userLogin == null ? userId : userLogin.getString("name");
GenericValue certificatePrintTemplate = null;
if (guid == null || "".equals(guid) || "null".equals(guid)) {
certificatePrintTemplate = base.getDelegator().makeValue("CertificatePrintTemplate");
certificatePrintTemplate.put("guid", UUID.randomUUID().toString().toUpperCase());
certificatePrintTemplate.put("userId", userId);
certificatePrintTemplate.put("userName", name);
certificatePrintTemplate.put("templateName", templateName);
certificatePrintTemplate.put("templateContent", templateContent);
certificatePrintTemplate.put("width", width);
certificatePrintTemplate.put("height", height);
// certificatePrintTemplate.put("templateStyle", templateStyle);
certificatePrintTemplate.put("planGuid", planId);
certificatePrintTemplate.put("createdTime", new java.sql.Timestamp(new Date().getTime()));
base.getDelegator().create(certificatePrintTemplate);
} else {
certificatePrintTemplate = base.getDelegator().findByPrimaryKey("CertificatePrintTemplate", UtilMisc.toMap("guid", guid));
certificatePrintTemplate.put("templateName", templateName);
certificatePrintTemplate.put("templateContent", templateContent);
certificatePrintTemplate.put("width", width);
certificatePrintTemplate.put("height", height);
// certificatePrintTemplate.put("templateStyle", templateStyle);
base.getDelegator().store(certificatePrintTemplate);
}
resultMap.put("result", "success");
}
} catch (GenericEntityException e) {
e.printStackTrace();
resultMap.put("result", "error");
}
return resultMap;
}

注意:因为保存模板是html代码,所以要在service配置时,在模板内容的入参加一个参数: allow-html="any"

<attribute name="templateContent" mode="IN" type="String" allow-html="any" optional="true"/>

否则会报错:In field [templateContent] less-than (<) and greater-than (>) symbols are not allowed

意思是:"<",">"不能出现在这个域内

ofbiz保存jsp页面数据的更多相关文章

  1. JSP页面数据展示:分组数据展示

    一.描述: 页面上要展示的数据只要写好sql从数据库查出来即可,但是展示有时候不是太好处理.比如工作中遇到的这种情况:有一个问题处理的流程,其中需要选择下一处理人,这些处理人要以部门的形式分组展示,实 ...

  2. jsp页面数据分页模仿百度分页效果

    <%@page import="web09.shop.DBUtil"%> <%@page import="java.sql.ResultSet" ...

  3. jsp页面数据回显(select下拉选择框)

    1.静态变量方式: <!-- 实现select标签回显 --> 1.<select name="curStatus" value="${curStatu ...

  4. myeclipse编辑jsp页面卡

    现象 但是遇到了一种情况,编辑jsp页面卡,尤其是使用快捷键ctrl+ 时会很卡. 编辑java页面没问题的,比较流畅. 在jsp页面中一点ctrl+  就卡几秒钟. 按照上篇文章中优化过后只是编辑j ...

  5. SpringMVC:前台jsp页面和后台传值

    前台jsp页面和后台传值的几种方式: 不用SpringMVC自带的标签 前台---->后台,通过表单传递数据(): 1.jsp页面代码如下,  modelattribute 有没有都行 < ...

  6. JSP实现数据传递与保存

    业务逻辑: 1.登陆login.jsp 2.判断登陆是否成功check.jsp 3.登陆成功页面newsDetail.jsp 4.登陆失败转发到login.jsp 代码如下: <%@ page ...

  7. 003杰信-在jsp页面输入数据,然后在oracle数据库中插入factory数据,当字段允许为空时要特殊处理

    本博客的内容全部来自于传智播客,特在此说明. 业务要求如下:在jsp页面(jFactoryCreate.jsp)上输入数据时,转到后台,并输入到数据库. jFactoryCreate.jsp页面:

  8. jsp页面 将数据以Json 格式保存到数据库

    1:jsp页面 <div class="control-group form-group all_activity"> <c:choose> <c:w ...

  9. 解决JSP页面获取的数据库数据乱码问题

    将java项目部署到服务器,页面数据乱码: 解决:首先查看了数据库编码和jsp编码都是utf-8,说明jsp和数据库没问题,于是查看了tomcat设置的编码 没有设置编码,于是加了URIEncodin ...

随机推荐

  1. LG2704 [NOI2001] 炮兵阵地

    题目描述 (试题来源:Link ) 司令部的将军们打算在 \(N\times M\) 的网格地图上部署他们的炮兵部队.一个 \(N\times M\) 的地图由 \(N\) 行 \(M\) 列组成,地 ...

  2. Jenkins执行脚本文件

    Jenkins执行脚本文件如下(startup.sh): #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 export JAVA_HOME=/usr/src/java/jdk ...

  3. python input() 与raw_input()

    使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的1:纯数字输入 当输入为纯数字时 input返回的是数值类型,如int,float   ...

  4. MongoDB拥有SSD秒杀高富帅使用过程分享

    [IT168现场报道]2013年4月18-20日,第四届中国数据库技术大会(DTCC 2013)在北京福朋喜来登酒店拉开序幕.在为期三天的会议中,大会将围绕大数据应用.数据架构.数据管理(数据治理). ...

  5. ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

    https://blog.csdn.net/ztf312/article/details/50708302 报错原因: Numpy对逻辑表达式判别不清楚,它可以返回False如果等号两边两个式子是数值 ...

  6. python学习那点事---列表生成式实现大小写字母相互转换

    题目: 已知列表list=["pYTHON","iS",eASY],要求使用列表生成式实现,生成一个新的列表,要求将大写字母转换为小写字母,小写字母转换为大写字 ...

  7. CSS深入理解line-height

    1.line-height高度基于基线 2. 3.p元素的高度由行高决定的 4. 5.

  8. VM虚拟机启动centos出现内部错误

    内部错误 解决办法 1.关闭虚拟机后,单击VM,右键,以管理员身份运行.   2.找到电脑的 管理— Vmware workstation server ,默认状态下是手动,把他改为自动重启就可以啦.

  9. 阿里巴巴高级Java面试题(首发,70道)

    整理的70道阿里的Java面试题,都来挑战一下,看看自己有多厉害.下面题目都带超详细的解答,详情见底部. 1.java事件机制包括哪三个部分?分别介绍. 2.为什么要使用线程池? 3.线程池有什么作用 ...

  10. Scala中下划线的总结

    1. 方法转化为函数 2. 集合中的每一个元素 3. 获取元组Tuple中的元素 4. 模式匹配 5. 队列 6. 导包引入的时候 7. 初始化变量 引用自:https://blog.csdn.net ...