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. boost serialization

    Archive An archive is a sequence of bytes that represented serialized C++ objects. Objects can be ad ...

  2. 详解如何定义SQL Server外关键字约束

    SQL Server外关键字约束定义了表之间的关系.当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联.这样,当在 ...

  3. 【Linux】清理缓存buffer/cache

    运行sync将dirty的内容写回硬盘 sync 通过修改proc系统的drop_caches清理free的cache echo 3 > /proc/sys/vm/drop_caches ech ...

  4. python中递归函数

    python中的 递归函数,是指的是函数在函数内部调用自己的函数 需要满足两个条件,一,需要有一个明确的终止条件 二,需要函数自己在内部调用自己

  5. 解决Flutter boost模块化加入到原有android项目后,首次加载过慢的问题

    由于Flutter boost目前还没有很好的解决方案,所以只能魔改了,大致的思路就是在刚打开app的时候就初始化一个不可见的Flutter页面,让其自动注册&初始化. 先编写一个Flutte ...

  6. sqlserver怎么copy一张表为另一张表

    SQL Server中,如果目标表存在:insert into 目标表 select * from 原表;SQL Server中,,如果目标表不存在:select * into 目标表 from 原表 ...

  7. HDU 5183 Negative and Positive (NP) (手写哈希)

    题目链接:HDU 5183 Problem Description When given an array \((a_0,a_1,a_2,⋯a_{n−1})\) and an integer \(K\ ...

  8. Intellij Idea乱码解决方案都在这里了

    乱码场景 使用Intellij Idea经常遇到乱码问题,可以总结为以下几类乱码的场景. 1.工程代码乱码. 2.main方法运行,控制台乱码. 3.tomcat运行,控制台乱码. 解决方案 1.工程 ...

  9. Docker镜像仓库的搭建--> Harbor篇

    简介 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor Harbor作为一个企业级私有R ...

  10. ASP.NET Core 2.1 JWT Token 使用 (二) - 简书

    原文:ASP.NET Core 2.1 JWT Token 使用 (二) - 简书 接上文,https://www.jianshu.com/p/c5f9ea3b4b65 ASP.NET Core 2. ...