解决方法: 导入js文件(outOfBounds.js)java
解决方法:node
//获取全部被选中的记录spring
var e = $("#grid").datagrid("getSelections");数据库
//获取单行被选中的记录json
var e = $("#grid").datagrid("getSelected");api
解决方法:数组
//设置id列能够编辑浏览器
var e = $("#grid").datagrid("getColumnOption","id");app
e.editor.type='validatebox';框架
e.editor.options ={required : true};
//设置id列不能够编辑
var e = $("#grid").datagrid("getColumnOption","id");
e.editor.type=null;
解决方法:
//获取要提交的form对象,调用全局函数serializeJson
var p = $("#searchForm").serializeJson();
$.fn.serializeJson=function(){
var serializeObj={};
var array=this.serializeArray();
$(array).each(function(){
if(serializeObj[this.name]){
if($.isArray(serializeObj[this.name])){
serializeObj[this.name].push(this.value);
}else{
serializeObj[this.name]=[serializeObj[this.name],this.value];
}
}else{
serializeObj[this.name]=this.value;
}
});
return serializeObj;
};
解决方法:
//获取请求头中的浏览器类型
String agent = ServletActionContext.getRequest().getHeader("User-Agent");
//工具类,按照不一样的浏览器,作不一样的编码处理
public static String encodeDownloadFilename(String filename, String agent)
throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其余浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," ");
}
return filename;
}
解决方法:
//判断对象id是否为空
if(obj != null && StringUtils.isNotBlank(obj.getId())){
… …
}
var setting = {
data : {
key : {
title : "t"
},
simpleData : {
enable : true
}
},
check : {
enable : true }
}
ztree中显示的复选框,本质上只是一个span,要想获取其表明的id,只能调用api
//获取zTree对象
var treeObj = $.fn.zTree.getZTreeObj("functionTree"); // functionTree 是ztree的id
//获取当前树中被选中项的集合
var nodes = treeObj.getCheckedNodes(true);
避免每访问一次就添加一次数据,必定要在添加以前清空
$.post(url_noassociation,{},function(data){
$("#noassociationSelect").empty(); //清空原先的数据
for(var i = 0; i<data.length; i++){
$("#noassociationSelect").append(
"<option value='"+data[i].id+"'>"+data[i].name+"</option>");
}
});
<select id="noassociationSelect" multiple="multiple" size="10"></select>
<select id="associationSelect" name="customerIds" multiple="multiple" size="10"></select>
为按钮添加事件:
$(function(){
$("#toRight").click(function(){
$("#associationSelect").append($("#noassociationSelect option:selected"));
});
$("#toLeft").click(function(){
$("#noassociationSelect").append($("#associationSelect option:selected"));
});
});
检查字段名大小写拼写是否正确
使用ocupload.js的upload方法
$(function(){
$("#button-import").upload({ //调用该方法,前提是导入ocupload的js文件
action:'${pageContext.request.contextPath}/regionAction_importBatch.action',
name:'myFile',
onComplete:function(data){
if(data == "0"){
$.messager.alert("提示信息","区域数据导入失败!","warning");
}else{
$.messager.alert("提示信息","区域数据导入成功!","info");
}
}
});
});
1. 首先根据任务的id能够获得任务相关的信息
2. 根据任务对象找到流程定义对象,获取流程定义的实体对象, 获取流程实例的进度id
3. 根据流程定义的实体对象, 获取当前所在步骤的activity对象
4. 根据activity对象,获取图片的宽高,及起点的纵横坐标
public String showPng(){
//根据流程实例id获取流程实例对象
ProcessInstance processInstance =
runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult();
//根据流程对象获取流程定义id
String definitionId = processInstance.getProcessDefinitionId();
//根据流程对象获取流程实例的进度id
String activityId = processInstance.getActivityId();
//根据流程定义id,获取流程定义对象
ProcessDefinition processDefinition =
repositoryService.createProcessDefinitionQuery().processDefinitionId(definitionId).singleResult();
//根据流程定义对象获取流程的发布id
String deploymentId = processDefinition.getDeploymentId();
//根据流程定义对象获取 图表 的名字
String pngName = processDefinition.getDiagramResourceName();
//根据流程定义id,获取流程定义的实体对象
ProcessDefinitionEntity definition = (ProcessDefinitionEntity)
repositoryService.getProcessDefinition(definitionId);
ActivityImpl activity = definition.findActivity(activityId);
//获取坐标及宽高
int height = activity.getHeight();
int width = activity.getWidth();
int x = activity.getX();
int y = activity.getY();
//将部署id,任务id,及坐标宽高等信息,放入map,压入值栈
Map<String, Object> map = new HashMap<String, Object>();
map.put("deploymentId", deploymentId);
map.put("pngName",pngName );
map.put("x",x );
map.put("y",y );
map.put("width", width);
map.put("height",height );
ActionContext.getContext().getValueStack().push(map);
return "showPng";
}
5. 跳转到展现图片的页面,动态展现图片
<!-- 1.获取到规则流程图, 发送请求到action中,动态展现流程图 -->
<img style="position: absolute;top: 0px;left: 0px;"
src="processInstanceAction_viewImage?deploymentId=${deploymentId}&pngName=${pngName}">
<!-- 2.根据当前活动的坐标,动态绘制DIV -->
<div style="position: absolute;
border:1px solid red;top:${y-1}px;left:${x-1}px;width:${width}px;height:${height}px;">
</div>
6. 为流程图准备数据
public String viewImage(){
InputStream inputStream =
repositoryService.getResourceAsStream(deploymentId, pngName);
ActionContext.getContext().getValueStack().set("pngStream",inputStream );
return "viewImage";
}
7.在struts.xml中,设置返回数据为数据流
<result name="viewImage" type="stream">
<param name="contentType">image/png</param>
<param name="inputName">pngStream</param>
</result>
action注解式Controller,必定及得是多例多例!!!
@Scope(“prototype“)
解决方法:
因为shiro框架,是基于代理的.cglib是基于子类继承父类实现的
而BaseAction中,泛型是调用BaseAction的类的class,没有考虑到代理状况,所以,要完善构造方法
//构造方法,为model初始化值
public BaseAction(){
ParameterizedType superclass = null;
//判断的父类是不是含参的类
if(this.getClass().getGenericSuperclass() instanceof ParameterizedType){
superclass = (ParameterizedType) this.getClass().getGenericSuperclass();
}else{
//不是含有参数泛型的类,再找一次父类
superclass =
(ParameterizedType) this.getClass().getSuperclass().getGenericSuperclass();
}
Type[] arguments = superclass.getActualTypeArguments();
Class<T> entityClass = (Class<T>) arguments[0];
detachedCriteria = DetachedCriteria.forClass(entityClass);
pageBean.setDetachedCriteria(detachedCriteria);
try {
model = entityClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
业务层及持久层的注解要加在实现类上!!!!
解决方法: 使用hibernate的翻转功能
具体步骤:
1. 打开myeclipse
2. 切换到Hibernate视图
3. 在下图中,右键,点击新建(new)
4. 弹出设置窗口,作如下设置
5. 双击 mybos,会出现如下效果
6. 切换到javaee视图
建立一个普通java project便可
右键====>>myeclipse====>> add hibernate capabilities
7. 修改hibernate框架的相关设置便可
注意,要修改表对应的类名时,要写全类名
成功后,项目的图表会有一个hibernate的框架标识...
8. 调整到hibernate视图,进行操做
选择相应数据库中的相应表,右键====>> hibernate reverse engineering
下一步(默认就好):
下一步:
OK!!
将crm(客户关系管理)系统中的customer文件及service文件拷贝到本身的系统下
注意:必定要保证customer在本地系统的路径与crm系统中的路径一致
配置applicationContext.xml文件
<!-- 注册远程服务的代理工厂 -->
<bean id="customerService"
class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<!-- 注入接口类型,针对接口建立对象 -->
<property name="serviceInterface"
value="cn.xiaoge.crm.service.CustomerService"></property>
<!-- 服务的访问地址 -->
<property name="serviceUrl"
value="http://localhost:8080/crm/remoting/customer"></property>
</bean>
当model会封装全部前台请求数据中与其字段匹配的数据
//设置此项,将结果封装到根实体中
criteria.setResultTransformer(DetachedCriteria.ROOT_ENTITY);
//利用jsonconfig排除干扰项
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(excludes); //excludes是字符串数组类型
//进行转换
String json = JSONObject.fromObject(obj, jsonConfig).toString(); //转换对象
或: String json = JSONArray.fromObject(list, jsonConfig).toString(); //转换数组
private Class<T> entityClass; //准备class类型的属性,用于接收泛型的真实类型
//在构造函数中,获取调用BaseDao的实体类的class
public BaseDaoImpl(){
//获取调用该 dao 的实体
ParameterizedType superClass =
(ParameterizedType) this.getClass().getGenericSuperclass();
Type[] arguments = superClass.getActualTypeArguments();
entityClass = (Class<T>) arguments[0];
}