一、ie8瀏覽器中,combobox的大小要使用px,才能與通常瀏覽器大小一致javascript
二、從數據庫中讀出的時間戳timestamp類型的數據,轉換爲頁面的string類型,會默認在末尾加.0,能夠經過在js前端控制:php
formatter : function(value, row, index) {前端
var str=value.substr(0,19);java
return str;mysql
}linux
三、修改頁面若是有combobox字段,能夠先將查詢出來的值放到隱藏域中,再在js中加載,把值賦給combobox:ajax
<input id="lighttype" name="lighttype" value="${adaptModel.light_type}" type="hidden"/>正則表達式
$(document).ready(function(){sql
initSelect();數據庫
});
function initSelect(){
var lighttype=$("#lighttype").val();
$("#light_type").combobox("setValue",lighttype);
}
四、驗證經過form才能提交:
var isValid = $(form).form('validate');
if(isValid){
$.ajax({
});
}
2016-06-20
一、el表達式能夠直接用在js中,如:
$(document).ready(function(){
var device_type="${deviceinfo.device_type}";
}
也能夠用在路徑url中,如:
Url:basepath+」xxxaction/getxxx.do?num=${good.good_num}」
二、JSON.parse():從字符串中解析出json對象
JSON.stringify():從對象中解析出json類型的字符串
3、sql中使用resultClass,必須確保model的屬性名稱與數據庫中的字段名稱如出一轍,(不區分大小寫),而resultMap的話,只要property和column對應好就能夠了。resultMap的性能更好
2016-06-24
一、瀏覽器在解析js時,會把‘’和0當成同一個值,寫js時要注意
二、<a href=」#」>與<a href=」javascript:void(0)」>的區別:
<a href=」#」>中的# 是錨點的意思,默認爲#top。當頁面較長時,使用這種方式會讓頁面刷新到首頁(頁面的最上部)
<a href=」javascript:void(0)」>是一個死連接,當使用超連接處理js腳本(通常是click),又不想回到首頁(局部刷新)時使用
故,當須要總體刷新時,使用#;當須要局部刷新時,使用以下幾種方式:
<a href=」####」></a>
<a href=」javascript:void(0)」></a>
<a href=」javascript:void(null)」></a>
<a href=」#」 onclick=」return false」></a>
2016-06-29
一、var arr=[];
Arr.join(‘,’);
//以逗號爲分隔符,將數組的元素組成一個字符串
二、combobox的data-options=」panelHeight:auto」能夠控制下拉框顯示選項的高度,超過即會出現滾動條
3、formatter: function(value,row,index){
if (typeof(value) != "undefined") {
value = value.replace(/</g, "<");
value = value.replace(/>/g, ">");
return value.length>10?value.substr(0,10)+"...":value;
}
}
//爲防止惡性注入js代碼,用replace方法替換輸入的大於號小於號,replace的第一個參數是一個正則表達式.
2016-06-30
1、success:function(result){
var Obj=eval('(' + result + ')');
}
//js中的eval(codestring)函數,先解釋js代碼,而後再執行它,codestring是包含有js語句的字符串
2016-07-01
一、圖片上傳下載
主頁面:
<td rowspan="4" colspan="2" align="center">
<div ><img style="width:150px;height:150px"id="imgFile" src="${ct}/employee/getImg.do?imgPath="/></div>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-add'" plain="true" onclick="return uploadImg();">上傳頭像</a>
<input id="ygtx" name="ygtx" type="hidden"/>
</td>
上傳頭像的方法:
function uploadImg(){
var dialog = parent.ns.modalDialog({
title: '上傳頭像',
url: '${ct}/employee/toUploadImg.do',
width: 400,
height: 300,
buttons: [ {
text: '保存',
iconCls: 'icon-save',
handler: function () {
var imgPath=dialog.find('iframe').get(0).contentWindow.getImgPath();
if(imgPath==""){
parent.$.messager.alert('提示', '請選擇正確的圖片格式文件','warning');
return false;
}
//獲取頭像圖片
url="${ct}/employee/getImg.do?imgPath="+imgPath;
$("#imgFile").attr("src",url);
$("#ygtx").val(imgPath);
dialog.dialog('destroy');
}
},{
text: '關閉',
iconCls:'icon-cancel',
handler: function () {
dialog.dialog('destroy');
}
}]
});
}
子頁面:
<form enctype="multipart/form-data" id="uploadImgForm" action="${ct}/employee/uploadImg.do" method="post" >
<table style="margin-left: auto;margin-right: auto;margin-top: 50px" class="gridtable">
<tr><td> <input type="file" id="imgFile" required="required"
name="imgFile" />
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-upload'" onclick="validateImg()" plain="true" >提交</a>
</td>
</tr>
</table>
</form>
<script type="text/javascript">
function validateImg(){
var imgFormats=['bmp','jpg','jqeg','jpe','jfif','gif','png'];
var imgRealPath =$("#imgFile").val();
var imgSplit = imgRealPath.split('.');
var imgFormat = imgSplit[imgSplit.length-1];
//驗證圖片格式
var formateIsRight = false;
for(var i=0;i<imgFormats.length;i++){
if(imgFormats[i]==imgFormat){
formateIsRight=true;
break;
}
}
if(!formateIsRight){
jQuery.messager.alert('提示','請上傳經常使用的圖片格式文件','warning');
return false;
}else{
$("#uploadImgForm").submit();
}
}
function getImgPath(){
var imgPath=$("#imgPath").val();
if(imgPath!=undefined){
return $("#imgPath").val();
}else{
return "";
}
}
</script>
Action類方法:
//上傳頭像
public String uploadImg(){
HttpServletRequest request=getHttpServletRequest();
ContinueFTP continueFTP=new ContinueFTP();//支持斷點續傳的FDP類
try {
String ftpPropertiesPath=request.getSession().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"classes"+File.separator+"conf"+File.separator+"properties"+File.separator+"ftp.properties");
com.kuangchi.sdd.util.file.FTP ftp=com.kuangchi.sdd.util.file.FTPUtil.getFtp(ftpPropertiesPath);
String dateString= DateUtil.getDateString(new Date(),"yyyyMMdd");
String dateTimeString=DateUtil.getDateString(new Date(),"yyyyMMddHHmmss");
String fileName=dateTimeString+imgFileFileName;
String imgPath=dateString+"/"+fileName;
continueFTP.connect(ftp.getHost(), ftp.getPort(), ftp.getUserName(), ftp.getPassword());
continueFTP.upload(imgFile,imgPath );
request.setAttribute("message", "上傳成功");
request.setAttribute("imgPath",imgPath );
} catch (IOException e1) {
e1.printStackTrace();
request.setAttribute("message", "上傳失敗");
}
return "success";
}
//獲取頭像
public void getImg(){
HttpServletRequest request=getHttpServletRequest();
HttpServletResponse response=getHttpServletResponse();
String imgPath=request.getParameter("imgPath");
ContinueFTP continueFTP=new ContinueFTP();
java.io.InputStream is=null;
OutputStream out=null;
try {
String ftpPropertiesPath=request.getSession().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"classes"+File.separator+"conf"+File.separator+"properties"+File.separator+"ftp.properties");
com.kuangchi.sdd.util.file.FTP ftp=com.kuangchi.sdd.util.file.FTPUtil.getFtp(ftpPropertiesPath);
continueFTP.connect(ftp.getHost(), ftp.getPort(), ftp.getUserName(), ftp.getPassword());
if (null!=imgPath&&!imgPath.trim().equals("")&&!"undefined".equals(imgPath)) {
is=continueFTP.download(imgPath);
}else{
//若是沒有上傳頭像,則給一個默認頭像
String defaultImg=request.getSession().getServletContext().getRealPath(File.separator+"businessConsole"+File.separator+"images"+File.separator+"defaultImg.jpg");
File file=new File(defaultImg) ;
is=new FileInputStream(file);
}
out=response.getOutputStream();
byte[] buffer=new byte[1024];
while (is.read(buffer)!=-1) {
out.write(buffer);
}
out.flush();
continueFTP.disconnect();
} catch (Exception e) {
e.printStackTrace();
}finally{
if (null!=is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null!=out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2016-08-16
一、Map對象的keySet()方法獲取全部的key值,放在一個Set中:
Map map=new HashMap();
Map.put(1,」a」);
Map.put(2,」b」);
Map.put(3,」c」);
Set keys1=map.keySet();
Set keys2=map.keySet();
Set keys3=map.keySet();
上面3個set對象,引用的是同一個對象,map的keySet()方法只返回一個set實例,因此當從keys1中刪除一個對象時,key2,key3也會受到影響:
Keys1.remove(1);
System.out.println(keys1);
System.out.println(keys2);
System.out.println(keys3);
結果爲:[2,3]
[2,3]
[2,3].
循環map的key:for(String datakey:map.keySet()){
System.out.println(datakey);
};
同時可用泛型:for(Map.Entry<Integer,String> entry:map.entrySet){
System.out.println(entry.getKey()+」」+entry.getValue());
}//Map.Entry是Map聲明的一個內部接口
補充:遍歷Map的經常使用方法-->使用迭代器遍歷Map
(1)Map map=new HashMap();
Iterator iterator=map.entrySet().iterator();
While(iterator.hasNext()){
Map.Entry entry=iterator.next();
Object key=entry.getKey();
}
(2)Map map=new HashMap();
Set keySet=map.keySet();
Iterator iterator=keySet.iterator();
While(iterator.hasNext()){
Object key=iterator.next();
Object value=map.get(key);
}
(3)Map map=new HashMap();
Collection c=map.values();
Iterator iterator=c.iterator();
While(iterator.hasNext()){
Object value=iterator.next();
}//單純遍歷value值,Map的values()方法,返回的是value的collection集合
2016-09-01
一、java中,兩個double類型的數據不能直接用==或!=來比較大小,因爲會丟失精度,比較出來的結果是錯誤的。兩個Double類型數據的比較,能夠用減法-來實現與0的大小比較
二、分頁顯示的頁數與顯示總條數不符合時,考慮是否sql語句忘記加分頁條件
三、查詢時Sql語句注意標誌位的使用,要排除已刪除的記錄;模糊查詢語句儘可能用join等鏈接操做,避免空字符的錯誤
2016-09-02
一、讀取 properties配置文件的工具方法propertyToMap的主要實現代碼:
Properties prop=new Properties();
Map<String,String> pros=new HashMap<String,String>();
InputStream in=PropertiesToMap.class.getClassLoader().getResourceAsStream(「/conf/properties/」)+propertyName;
Try{
Prop.load(in);
Iterator<String> it=prop.stringPropertyNames().iterator();
While(it.hasNext()){
String key=it.next();
String value=prop.getProperty(key);
Pros.put(key,value);
}
In.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
If(in!=null){
Try{in.close();}catch(IOException e){
e.printStackTrace();
}
}
}
Return pros;
二、mysql語句中使用條件判斷:
select
case
when type=0 then '充值'
when type=1 then '消費'
when type=2 then '補助'
END as type,
id,
detail_flow_no as detailFlowNo
from
kc_xf_account_detail
where 1=1
三、join和left join的區別
(1)join留下來的記錄是徹底符合on條件的
(2)A Left join B:A的記錄全保留,B的記錄符合on條件的留下
4、mysql的left(str,length)函數,截取部分字符串
2016-09-08
一、後臺使用split函數對字符串進行分割時,注意,若是分隔符是‘.’‘|’時,要使用‘\\.’‘\\|’,由於‘.’‘|’自己是轉義字符
2016-09-13
一、將datagrid1選中的記錄行添加到另外一個datagrid2:
Var select=datagrid1.datagrid(「getSelected」);
Datagrid2.datagrid(「appendRow」,select);
二、獲取datagrid全部行記錄:
Var data=datagrid.datagrid(「getData」);
Var nums=[];
For(data.rows.length){
Nums.push(Data.row[i].d_num);
}
三、按行索引刪除行記錄:
Var rowIndex=datagrid.datagrid(「getRowIndex」,datagrid.datagrid(「getSelected」));
Datagrid.datagrid(「deleteRow」,rowIndex);
2016-09-19
1、mysql5.x升級至mysql5.7後導入以前數據庫date出錯的解決方法!
修改mysql5.7的配置文件便可解決,方法以下:
linux版:找到mysql的安裝路徑進入默認的爲/usr/share/mysql/中,進行對my-default.cnf編輯
利用查找功能"/"找到"sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"
將其刪除或者是註釋便可。
windows版:32位找到mysql安裝路徑直接修改my.ini文件利用ctrl+f
搜索出來的內容應該是sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
將其註釋或者是刪除便可。
64位須要進入windows的隱藏文件夾C:\ProgramData\中找到MySQL\MySQL Server 5.7,修改配置文件my.ini
利用ctrl+f搜索出來的內容應該是sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
將其註釋或者是刪除便可。
2016-09-20
一、
(1)下載批量導入模板
表格模板ExcelExportTemplate中的createLongTitleRow方法能夠設置模板的表頭、說明等,
TitleRowCell的構造方法有兩個參數,一個是列標題,一個是是否必填的,在此能夠控制字段的必填
(2)上傳填寫了內容的模板文件
二、dStr.compareTo(targetdate) > 0比較日期大小
Dstr是當前日期,targetdate是目標日期,大於0說明當前大於目標
三、date.match(「正則表達式」),匹配格式
四、HSSFSheet sheet的方法getLastRowNum獲取的是最後一行的行索引
2016-11-08
1.$('#dataGrid').datagrid({
rowStyler:function(rowIndex,getData){
if (getData.is_default==1){
return '';
}
}
});//設置行樣式
2.new Date().setHours(hours,minutes,seconds)給新建的日期對象設置小時、分鐘、秒,參數是可選的。設置完成後,能夠用來比較日期大小;
2016-11-16
一、java.net.InetAddress的靜態方法getLocalHost()獲取本地ip地址。
二、Mysql中不等於用!=和<>均可以,sqlserver中不等於用<>,不兼容!=,php中不等於用!=和<>均可以。
三、按索引修改datagrid的行記錄的字段後,用方法acceptChanges提交全部修改後的數據,如:
dataGrid.datagrid('getData').rows[index].doorPowerNum=doorsObj.doorPowerNumStr;
dataGrid.datagrid('acceptChanges');
四、idField爲num,columns:{field:’num’...},方法selectRecord能夠經過id域值參數選擇一行,如:
var arr=doorPowerNumStr.split("|");
for(var i=0;i<arr.length;i++){
dataGrid.datagrid("selectRecord",arr[i]);
}
2016-11-23
一、調試時,點擊下一步,出現source not found時,能夠點擊下面的編輯按鈕edit source lookup path,彈窗內選擇add,再選擇java project裏你的項目,ok肯定便可:
Debug 視圖下
-》在調試的線程上 右鍵單擊
-》選擇Edit Source Lookup Path
-》選擇Add
-》選擇Java Project
選擇相應的Project 進行OK肯定便可
2016-12-16
1、端口8005, 8080, 8009被佔用了。多是在打開Tomcat的狀況下關閉了Eclipse,或是Eclipse非正常關閉,致使先前的Tomcat沒有被關閉,端口占用。或是其餘軟件佔用了tomcat的端口號。
解決方法:
:殺掉佔用端口的軟件。
打開任務管理器,找到Java虛擬機相關的進程javaw.exe,將它結束掉
2017-01-05