解決方法: 導入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];
}