ExtJS4 grid日期格式问题

grid显示出问题,在网上找了解决办法做了格式转换显示正常了,插入修改都没问题,但是删除数据的时候报错,grid页面上显示的是2001-11-05,但是rec.data获取到的是
Mon Nov 05 2001 00:00:00 GMT+0800 (中国标准时间) 这种格式,怎么解决啊,求助

Field error in object 'book' on field 'date': rejected value [2001-11-05T00:00:00]; codes [typeMismatch.book.date,typeMismatch.date,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [book.date,date]; arguments []; default message [date]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'date'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "2001-11-05T00:00:00"]


Book.del = function (grid, rowIndex, colIndex){
Ext.Msg.confirm("提示","你确定要删除该记录么?",function(confirm){
if("yes" == confirm){
var store = grid.getStore();
var rec = store.getAt(rowIndex);
Ext.Ajax.request({
url:
params:rec.data,
success: function(response){
var text = response.responseText;
var result = Ext.JSON.decode(text);
if(result.success){
Ext.Msg.alert("信息","删除成功");
store.reload();
}else{
Ext.Msg.alert("错误",result.message);
}
}
});
}

});
};


function Todate(v) {
        if(v == null)
        {
          return null;
        }
    var d = new Date();
    var str = v.toString();
    var str1 = str.replace("/Date(", "");
    var str2 = str1.replace(")/", "");
    var dd = parseInt(str2);
    d.setTime(dd);
return d;
  };
Book.store = Ext.create('Ext.data.Store',{
fields:[
'bookName',
'author',
'bookType',
'createBy',
{ name: 'date',type:'date',dateFormat: 'Y-m-d', convert: Todate }
],
proxy: {
type: 'ajax',
url : "bookController.ajax?method=listBook",
reader: {
type: 'json',
root: 'resultList',
totalProperty: 'totalCount'
}
}
});


{
    text:'出版日期',
    dataIndex:'date',
    renderer: Ext.util.Format.dateRenderer('Y-m-d'),
    width:200
}

Book.formPanel = Ext.create('Ext.form.Panel',{
bodyPadding: 10,
defaultType:'textfield',
items:[
{fieldLabel:'书名',name:'bookName',allowBlank:false},
{fieldLabel:'作者',name:'author',allowBlank:false},
{fieldLabel:'书籍类型',name:'bookType',allowBlank:false},
{fieldLabel:'出版日期',name:'date',xtype:'datefield',format:'Y-m-d',allowBlank:false},
new Ext.form.Hidden({name:'_saveType'}),
new Ext.form.Hidden({name:'id'})
]
});


1个回答

2001-11-05T00:00:00这个日期格式不合法哦。

如果我的回答帮助了您,或者您希望得到小喵进一步的回答,请先采纳这个回答。
如果您觉得小喵的回答在所有回答中不是最好的,也请您在采纳别的大牛哥哥的答案的同时,点一个赞给我吧,您对小喵的鼓励是我前进的动力。
方法是光标移动到右边,点击采纳即可。这个步骤轻而易举,绝不耽误您宝贵的时间。
采纳我的回答还有如下好处:
(1)得到进一步深入的回答
(2)同时增加您的经验和人品,事实证明,采纳率高的用户,专家们更愿意回答你的提问,得到答案的速度和效率也更高。
(3)毫不耗费您的积分
图片说明
可怜的小喵妹妹拜托您啦。祝您工作顺利~心想事成!

Mybonnie1
Mybonnie1 嗯,我知道是这个问题,已经解决了,不用 renderer,直接把它变成字符串在grid显示就好了,谢谢了
接近 5 年之前 回复
Mybonnie1
Mybonnie1 嗯,我知道是这个问题,已经解决了,不用 renderer,直接把它变成字符串在grid显示就好了,谢谢了
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ExtJS grid行编辑问题
我新建了一个window,里面绑定了panel,panel中有数据,想用row editing实现双击某个行属性,实现编辑,但是报错 代码如下: Ext.define("Shop", { extend: 'Ext.data.Model', fields: [ { name: 'shopCode', type: 'string' }, { name: 'shopName', type: 'string' }, { name: 'shopStatus', type: 'string' }, { name: 'createDate', type: 'string' }, { name: 'shopScore', type: 'string' } ] }); var shopStore = new Ext.data.Store({ model : "Shop", autoLoad : true, proxy : { type : "ajax", url : "getAllShop.action", reader : { type : 'json', root : 'shopList' } } }); Ext.define('B2B2C.ShopGridWindow', { extend: 'Ext.ux.desktop.Module', requires: [ 'Ext.grid.*', 'Ext.data.*', 'Ext.util.*', 'Ext.state.*', 'Ext.form.*' ], id:'s-grid-win', init : function(){ this.launcher = { text: '店铺管理', iconCls:'icon-grid', handler : this.createWindow, scope: this }; }, createWindow : function(){ var me = this; shopStore.load(); var desktop = this.app.getDesktop(); var win = desktop.getWindow('s-grid-win'); if(!win){ win = desktop.createWindow({ id: 's-grid-win', title:'店铺管理', width:740, height:480, iconCls: 'icon-grid', animCollapse:false, constrainHeader:true, layout: 'fit', items: [ { border: false, xtype: 'grid', id: 's-grid', store: shopStore, plugins : [ Ext.create('Ext.grid.plugin.RowEditing',{ clicksToEdit:2 }) ], columns: [ new Ext.grid.RowNumberer(), { text: "店铺编码", width: 100, sortable: true, dataIndex: 'shopCode', editor :{ xtype: "textfield" } }, { text: "店铺名称", width: 200, sortable: true, dataIndex: 'shopName', editor :{ xtype: "textfield" } }, { text: "店铺分数", width: 70, sortable: true, dataIndex: 'shopScore', editor :{ xtype: "textfield" } }, { text: "创建时间", width: 160, sortable: true, dataIndex: 'createDate', editor :{ xtype: "textfield" } }, { text: "审核状态", width: 160, sortable: true, dataIndex: 'shopStatus', editor :{ xtype: "textfield" } } ] } ] 报错信息:TypeError: h is undefined ...k=0,m=l.length;k<m;k++){q=l[k];o=q.from;p=q.to;if(h===o||h.substring(0,o.length)...
extjs grid columns editor datefield 时间格式显示????
这是一个column ``` text:'Activated Date', dataIndex:'activateDate', filter:'date', editor:{ xtype: 'datefield', format: 'Ymd', value: Ext.Date.add(new Date(), Ext.Date.DAY, 0) } ``` 在双击grid的行后,可以进行编辑,该列时间控件显示正常,选择的时间也正常,就是在选择时间后,点击save,该列时间显示为“Thu Sep 07 2017 00:00:00 GMT+0800 (中国标准时间)”这样的。 该列的显示格式是“20170906”这样的,现在问题是保存后的格式和想要的不同请问这该怎么做呢? 尝试过添加renderer ``` renderer: function(value) { return value.format("Y-m-d"); } ``` 可是结果,那一列添加上面这该renderer,后几列就显示空白,原本的数据全部消失,不显示,这又是什么怪问题?
extjs grid
目前在研究 edit grid 选完日期后 store里的值是"Fri Nov 11 00:00:00 UTC+0800 2011" 请问怎么变成'YYYY-mm-dd'
Extjs Datefield的格式问题
在editorGridPanel中有一列是Datefield类型, store的定义是:fields : [{name : 'leavetime', type : 'date', dateFormat: 'Y-m-d' }] cm是这样定义的: this.cm = new Ext.grid.ColumnModel([{ id : "leavetime", header : "时间", sortable : true, width : 100, dataIndex : "leavetime", renderer:Ext.util.Format.dateRenderer('Y-m-d'), editor : new Ext.form.DateField({ allowBlank : false, readOnly : this.readonlyflg, format: 'Y-m-d' }) }]) 保存的时候日期post的值是:"leavetime":"2009-09-15T00:00:00" 在服务器端用JSONObject.toBean()无法将这个日期字符串转换成Date类型,而被设置成了今天的默认日期了(日期在jsonObject中) // 生成子表model TravelExpenseApplyDetail model = (TravelExpenseApplyDetail)JSONObject.toBean(jsonObject, TravelExpenseApplyDetail.class); 如果是"2009-09-15"的格式就能转换,"2009-09-15T00:00:00"就不能转换!!! 请问这个问题怎么解决??? [b]问题补充:[/b] 不行阿,数据库必须是date,java也必须是date类型的,不能改
Extjs4表单提交问题????
//------------------添加按钮事件---------------------------------------------- gdgl_add_Item:function(button){ var cmpanel=button.up('globalStatisticsView'); var store = cmpanel.getStore(); var myWindow = Ext.create('Ext.window.Window',{ title:'增加联系人', height: 300, width: 450, id:'add_window', layout: 'form', modal:true, items: { // Let's put an empty grid in just to illustrate fit layout xtype: 'form', border: false, layout: 'anchor', defaults: { anchor: '100%' }, defaultType: 'textfield', items: [{ fieldLabel: '故障时间', name: 'failuretime', xtype: 'datefield', margin:10, allowBlank:false },{ fieldLabel: '故障地点', name: 'failureaddress', margin:10, allowBlank: false },{ fieldLabel: '维修时间', name: 'repairtime', xtype: 'datefield', margin:10, allowBlank: true },{ fieldLabel: '维修人', margin:10, name: 'maintenanceman', allowBlank: true },{ fieldLabel: '完成情况', margin:10, name: 'completion', allowBlank: true },{ fieldLabel: '故障内容', margin:10, name: 'failurecontent', allowBlank: true }], buttons: [ { text: '增加', formBind: true, //only enabled once the form is valid disabled: true, handler: function() { var form = this.up('form').getForm(); var window =this.up('window'); Ext.Ajax.request({ url:'gdgl/addmanagers', headers:{'Content-Type':'application/json;charset=utf-8'}, //params:Ext.JSON.encode(form.getValues()) // Ext.Msg.alert('增加成功',JSON.stringify(myWindow.getValues(),null,2)); params:Ext.JSON.encode(form.getValues()) }); } },{ text: '取消', handler: function() { this.up('window').close(); } }] } }); myWindow.show(); }, 后台代码为SpringMVC,可是每次提交数据库都是空 @RequestMapping("/addmanagers") @ResponseBody public Map<String, Object> addWorkOrders(WorkOrders workOrders){ Map<String, Object> map = new HashMap<String, Object>(); Message message = workOrdersService.addWorkOrders(workOrders); map.put("success",message.isMessageFlag()); map.put("msg", message.getMessageName()+":"+message.getMessageText()); return map; } ----------------------------------------------------------------------- 为什么每次提交数据都是为空呢?我用的ajax请求提交数据有什么问题, 最主要的是我的model模型为什么datefield类型就是提交不上去呢?原来数据库字段类型都是string后来两个改为date类型后,Extjs就提交不上去了,请问是什么原因呢??
Extjs4 tabpanel 一个页面关闭后再打开报错
去年毕业,在公司一直做C/S的软件,最近工作不是很忙,就自己学习了下Extjs4 问题如标题所示。报错信息: TypeError: Argument 1 of Node.insertBefore is not an object. 我是用的desktop + Extjs提供的mvc 做的。 下面贴出部分代码 controller init:function(){ var self=this; coreApp=self; this.addFunItem=function(funInfo){//动态加载controller并渲染它的主窗体 if(funInfo){ var mainView=funInfo.mainView; //var funPanel=mainView.down(funInfo.funViewXtype); var funPanel=Ext.ComponentQuery.query(funInfo.funViewXtype)[0]; if(!funPanel){ this.application.getController(funInfo.funController).init(); funPanel=Ext.create(funInfo.funViewName); mainView.add(funPanel); mainView.setActiveTab(funPanel); }else{ mainView.setActiveTab(funPanel); } } }, this.control({ 'menuView treepanel[id="Clgl30000"]':{//查询 菜单树 添加单击事件 itemclick:function(tree,record,item,index,e,options){ var mainView=Ext.getCmp("centerpanel");//得到中间的 tabpanel 组件 if('Clgl30300'==record.data["fmenubh"]){// 单据查询 this.addFunItem({ mainView:mainView, funViewXtype:'djQueryView', funController:'core.app.controller.DjQueryController', funViewName:'core.app.view.DjQueryView' }); } } } }); view /** * */ Ext.define('core.app.view.DjQueryView',{ extend:'Ext.panel.Panel', closable:true, alias:'widget.djQueryView', id:'DjQueryView', title:'单据查询', layout:'border', defaults: { // collapsible: true, // split: true, bodyStyle: 'padding:0px' }, tbar: [ {text:'查询',id:'query',iconCls:'dept_table'}, {text:'导出',id:'export',iconCls:'table_add'}, {text:'打印',id:'print',iconCls:'table_remove'}, {text:'退出',id:'exit',iconCls:'table_remove',handler:function(btn){ btn.ownerCt.ownerCt.destroy( ); }} ], items:[ { xtype: 'container', height:90, region: 'north', layout:'absolute', // style: {borderColor:'#000000', borderStyle:'solid', borderWidth:'1px'}, defaults: { labelWidth: 60, flex: 1, style: { padding: '5px' } }, items: [ { xtype:'fieldset', title: '查询范围选择', frame:true, collapsible: true, defaults: {anchor: '100%'}, layout: 'anchor', width:180, height:80, items :[ { fieldLabel:'仓库',labelWidth:30, width:150, xtype:'combobox',id:'fckbh', store:'TclckStore', displayField: 'fmc', valueField: 'fckbh',value:'10001',//默认选择10001仓库 editable : false// 是否可编辑 } ], x:0, y:0 }, { xtype:'fieldset', title: '日期区间选择', collapsible: true, defaultType: 'datefield', defaults: { labelWidth:55, labelSeparator:':', labelAlign:'left' }, width:200, height:80, layout: 'absolute', items :[{ fieldLabel: '开始日期', format:'Y-m-d', name: 'begDate', autoFitErrors:false, x:0, y:0, width:180, value:Ext.Date.format(new Date(),'Y-m-d') }, { fieldLabel: '结束日期', format:'Y-m-d', name: 'endDate', autoFitErrors:false, x:0, y:30, width:180, value:Ext.Date.format(new Date(),'Y-m-d') }], x:190, y:0 } ] },{ xtype:'djQueryTable', frame:true, region: 'center', autoScroll:true //style: {borderColor:'#000000', borderStyle:'solid', borderWidth:'1px'} //title:'panel' } ], initComponent: function() { //初始化组件函数 this.callParent(arguments)//调用父类构造函数 var com=Ext.ComponentQuery.query('combobox',this)[0]; var store=com.store; store.load(function(records, operation, success) { com.select(store.getAt(0)); }); } }); view 中包含的 grid /** * */ Ext.define('core.app.view.DjQueryTable',{ extend:'Ext.grid.Panel', alias:'widget.djQueryTable', columnLines:true, autoScroll:true, columns:[ {header:'单据id',dataIndex:'fdjid'}, {header:'单据编号',dataIndex:'fdjbh'}, {header:'材料编号',dataIndex:'fclbh'}, {header:'仓库编号',dataIndex:'fckbh'}, {header:'基本数量',dataIndex:'fjbsl'}, {header:'入库批号',dataIndex:'frkph'}, {header:'进货单价',dataIndex:'fjhdj'}, {header:'零售单价',dataIndex:'flsdj'}, {header:'进货金额',dataIndex:'fjhje'}, {header:'零售金额',dataIndex:'flsje'} ], store:'DjQueryStore', initComponent: function() { //初始化组件函数 this.paging={//依靠父类构造 生成组件 所以写在 callParent 之前 xtype:'pagingtoolbar', store:'DjQueryStore', dock:'bottom', displayInfo:true } this.dockedItems=[this.paging]; var arr=[ Ext.create('Ext.grid.RowNumberer',{ header:'序号', renderer: function(value,metadata,record,rowIndex){ return '<font color="red">'+rowIndex+'</font>'; } }) ]; Ext.Array.insert(this.columns,0,arr); this.callParent(arguments);//调用父类构造函数 } }); 问题就出在 grid 中,不知道为什么, 我刚开始将分页插件 配置在dockedItems 运行之后就出现 页面关闭后再打开报这个错 然后我将 分页插件放到 构造方法里面就好了。 但是我在columns添加RowNumberer 就又出现了, 换到构造函数始终添加也不行。 求各路大神帮看下,很是困惑啊。
SpringMVC+hibernate4+Extjs4.2+mysql
---------- 1. 后台处理数据库数据(读取数据) @RequestMapping("/getmanagers") @ResponseBody public Map<String, Object> getWorkOrders(String page,String limit,String start,String all){ int pageInt = Integer.parseInt(page); int limitInt = Integer.parseInt(limit); int startInt = Integer.parseInt(start); Map<String, Object> map = new HashMap<String, Object>(); List<WorkOrders> list = workOrdersService.getWorkOrders(); List<WorkOrders> listTemp ; //数据库中的结果条数小于分页限制,则直接返回结果 map.put("total",list.size()); if(list.size()<=limitInt){ map.put("workOrders", list); return map; } if(all!=null){ map.put("workOrders", list); return map; } //截取List if(pageInt*limitInt>=list.size()){ listTemp = list.subList(startInt, list.size()); }else{ listTemp = list.subList(startInt, pageInt*limitInt); } map.put("workOrders", listTemp); return map; } ---------- 2. ExtMVC 中的model Ext.define('tw.model.GlobalStatisticsModel',{ extend : 'Ext.data.Model', fields: [ {name: 'id', type: 'int',sortType :'aesc'}, {name: 'failuretime',type: 'date'}, {name: 'failureaddress', type: 'string'}, {name: 'repairtime', type: 'string'}, {name: 'maintenanceman', type: 'string'}, {name: 'completion', type: 'string'}, {name: 'failurecontent', type: 'string'} ] }); 中的store Ext.define('tw.store.GlobalStatisticsStore',{ extend:'Ext.data.Store', model:'tw.model.GlobalStatisticsModel', pageSize: 17, proxy:{ type:'ajax', url: 'gdgl/getmanagers', reader: { type: 'json', root: 'workOrders' }, writer:{ type: 'json' } }, autoLoad: true }); 然后是Ext的View Ext.define('tw.view.gdgl.GlobalStatisticsView',{ extend : 'Ext.grid.Panel', xtype : 'globalStatisticsView', store:'GlobalStatisticsStore', selType : 'checkboxmodel', forceFit:false, columns: [{ text: 'ID', dataIndex: 'id', width:50, editor: { readOnly:true } }, { // text: '故障时间', header:'故障时间', dataIndex: 'failuretime', width:180, renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s'), editor: { allowBlank: false } }, { text: '故障地点', dataIndex: 'failureaddress', width:200, editor: { allowBlank: false }
ExtJs的可编辑grid中.单击怎么出现 一个默认值让其修改
ExtJs的可编辑grid中.单击怎么出现 一个默认值让其修改 [code="java"] { header: "取袋时间", dataIndex:'getRecordTime', width: 100, sortable: false, editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBank: false,value:'ss'})) } [/code] 比如上面的代码 如果想单击的时候 就出现SS 要怎么写 上面的 写法不行 [code="java"] editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBank: false,value:new Date().dateFormat('Y-m-d H:i:s')})) [/code]
Extjs grid双击一行时将第2列变为可编辑的文本框
才学的Extjs 版本用的4.2.1的自己写了个demo该怎么改才可以进行编辑?代码如下: var store = Ext.create('Ext.data.Store', { fields : ['numberid', 'id', 'name', 'typename', 'unitname','sum','pl','rk'], data : { items : [ { numberid : '1', id : 'WL-201608160001', name : '联想笔记本', typename : '52a-55', unitname:'台',sum:'12',sum:12 }, { numberid : '2', id : 'WL-201608160002', name : '戴尔笔记本', typename : '52s-55', unitname:'台',sum:'12',sum:12 }, { numberid : '3', id : 'WL-201608160003', name : '苹果笔记本', typename : '52f-55', unitname:'台',sum:'12',pl:"",rk:"" }, ] }, proxy : { type : 'memory', reader : { type : 'json', root : 'items' } } }); var pageToolbar=new Ext.create('Ext.panel.Panel', { height:28, items:[{ xtype: 'textfield', fieldLabel: '合计', inputId:"moneycount",//文本框id inputType:"Text",//input的类型 labelWidth :400,//lable宽度 inputWidth:70,//input宽度 style: { marginTop:"2px", marginLeft:"20px" } }] }); var datagrid=Ext.create('Ext.grid.Panel', { store : store, height:155, width:600, columnLines:true,//是否显示列之间的线条分割 sortable:true,//可以排序 selModel:{ //设置可以选中多行 injectCheckbox:1,//复选框出现的列 mode:"SIMPLE", checkOnly:false//是否只有复选按钮才能选中行 }, selType:"checkboxmodel",//设置复选按钮 autoScroll:true,//设置滚动条 viewConfig:{forceFit:false},//设置滚动条 columns : [ { text : '(栏号)', dataIndex : 'numberid',width: 200 }, { text : '物流编号', dataIndex : 'id', width: 200}, { text : '(物料名称)', dataIndex : 'name' ,width: 300}, { text : '规格型号', dataIndex : 'typename',width: 200 }, { text : '单位', dataIndex : 'unitname',width: 80 }, { text : '数量', dataIndex : 'sum',width: 80 }, { text : '批号', dataIndex : 'pl',width: 80 }, { text : '分录备注', dataIndex : 'rk',width: 80 } ], listeners: { /*click: { element: 'el', //bind to the underlying el property on the panel fn: function(){ alert('click el'); } },*/ dblclick: { element: 'body', //bind to the underlying body property on the panel fn: function(){ alert(Ext.getDom("text1").value); /*alert(Ext.getDom("text2").value); alert(Ext.getDom("text3").value); alert(Ext.getDom("text4").value);*/ //获取选中行 var selArr=datagrid.getSelectionModel().getSelection(); if (selArr && selArr.length>0) { for ( var int = 0; int < selArr.length; int++) { alert(selArr[int].get("id")+"--"+selArr[int].get("name")); } } //获取所有行 /*var selAll=datagrid.data.items; for ( var int = 0; int < selAll.length; int++) { alert(selAll[int].get("id")+"--"+selAll[int].get("name")); }*/ } } }, /* bbar:[{ type: 'button', text: 'Button 1' }],*/ fbar: [ { type: 'button', text: 'Button 1' } ] }); var rowEditing = Ext.create('Ext.grid.plugin.RowEditing',{ clicksToMoveEditor:2, autoCancel:false, listeners:{ beforeedit:function(){ //添加编辑前响应的事件 var rows = datagrid.getSelectionModel().getSelection(); //在编辑前获取选中的行 setTimeout(function(){ datagrid.getselectionModel().select(rows) },0); //延迟执行代码重新勾选编辑前选中的行 } } }); var tabpal=Ext.create('Ext.tab.Panel', { width: 600, height: 180, renderTo: document.body, style:{ marginTop:"80px" }, items: [{ title: '内容', items: [datagrid] }, { title: '备注', }] } ); Ext.onReady(function(){ Ext.create('Ext.window.Window', { title: '调拨单', maximizable:true, minimizable:true, height: 400, width: 600, layout: 'absolute',//布局样式--fit,table, items:[{ xtype: 'textfield', name: 'name12', fieldLabel: '调出仓库', allowBlank: false, // 是否不必输入值 blankText:"请输入",//提示信息 inputId:"text1",//文本框id inputType:"Text",//input的类型 labelWidth :70,//lable宽度 inputWidth:200,//input宽度 style: { marginLeft:'10px', marginTop: '10px' } },{ xtype: 'datefield', name: 'datatime', fieldLabel: '单据日期', allowBlank: false, // 是否不必输入值 blankText:"请输入",//提示信息 labelWidth :70,//lable宽度 inputId:"text2",//文本框id inputWidth:200,//input宽度 format: 'Y-m-d', style: { marginLeft:'300px', marginTop: '10px' } },{ xtype: 'textfield', name: 'name13', fieldLabel: '调入仓库', allowBlank: false, // 是否不必输入值 blankText:"请输入",//提示信息 inputId:"text3",//文本框id inputType:"Text",//input的类型 labelWidth :70,//lable宽度 inputWidth:200,//input宽度 style: { marginLeft:'10px', marginTop: '40px' } },{ xtype: 'textfield', name: 'name124', fieldLabel: '单据号码', allowBlank: false, // 是否不必输入值 inputId:"text4",//文本框id inputType:"Text",//input的类型 labelWidth :70,//lable宽度 inputWidth:200,//input宽度 style: { marginLeft:'300px', marginTop: '40px' } },tabpal] }).show(); });
Javascript EXTJS关于select和itemclick事件同步问题
我用extjs做了一个grid,添加了grid.on("select", function(){})和 grid.listeners= {itemclick: function() {}} 这两个事件,因为我要一个菜单,select事件中取不到鼠标的位置, 而itemclick可以传递e参数取到鼠标位置。 但是麻烦来了,我想对grid中没有选中的row才弹出菜单, 已经选中的row不弹出菜单,但是,同时 select事件在鼠标点击时又会默认将row选中, 这样我在itemclick中一直判断到row是选中状态一直不弹出菜单。 目前解决是在itemclick中使用record.selected=true/false 来区别有没有选中,不在select中设置record.selected, 因为select中一旦给record.selected赋值true以后itemclick又都判断都是选中状态。 但是该解决方案在grid全选按钮选中时,由于 并不会调用itemclick回调,导致虽然选中了所有rows但是record.selected还是为false 这样判断仍旧有一些不起作用。所以想要select和itemclick进行同步,让select在itemclick之后再调用。除了settimeout将select延迟一段时间以外,请问还有什么方法同步这两个事件?
Extjs Gridpanel 分组分页问题
我要做一个类似论坛的东西,但是回复的查看方式是按人名分组的,考虑到恢复量很大,所以要求分页,现在的问题是分页的话可能会吧同一个人的两条恢复给分成两页显示,请问各位大神怎么解决这个问题 [b]问题补充:[/b] 如果想你说的那样不时每次都要把数据全都load出来,如果有个几千条数据不是很慢?? [b]问题补充:[/b] 需求改了,用的tabpanel+grid做的,虽然不知道这个到底怎么做的还是谢谢了,有时间在研究这个东西
extjs使用rowEditing时combo的赋值问题
首先是grid的显示 ![](http://img.bbs.csdn.net/upload/201507/21/1437466226_776631.jpg) 进行编辑后 ![](http://img.bbs.csdn.net/upload/201507/21/1437466308_513933.jpg) ![](http://img.bbs.csdn.net/upload/201507/21/1437466330_215239.jpg) 这是举办方列的js代码,绑定的是一个对象 ![](http://img.bbs.csdn.net/upload/201507/21/1437466517_953533.jpg) 问题就是怎么对编辑时的combo进行赋值,让它能正常显示文本。还有后面的时间控件也是这个问题,时间控件绑定的值都是Date(1438272000000)这样的文本 ![](http://img.bbs.csdn.net/upload/201507/21/1437466845_820173.jpg)
extjs如何把折线图chart放入到panel中进行显示
<script type="text/javascript"> Ext.onReady(function() { //创建每月贴现价格统计图 //通过JSON从数据库中获取数据 var chartStore = Ext.create('Ext.data.JsonStore', { fields : [ 'date', 'price1', 'price2', 'price3', 'price4' ], proxy : { type : 'ajax', url : 'chartSearch', reader : { type : 'json' } } }); //四条按交易类别区分的统计线 var monthPriceChart=Ext.create('Ext.chart.Chart', { id:'monthPriceChartid', animate: true, /* renderTo:'LineChart', */ width: 500, height: 300, store : chartStore, axes : [ {//定义坐标轴 title : 'Price', //纵轴标题 type : 'Numeric', position : 'left', fields : [ 'price1','price2','price3','price4'], grid:true, minimum:0 }, { title : 'Day', type : 'Category', position : 'bottom', fields : [ 'date' ] } ], series : [ { type : 'line', highlight:{ size:7, radius:7 }, displayName : '小票买断价', xField : 'date', yField : 'price1', markerConfig:{ type:'cross', size:4, radius:4, 'stroke-width':0 }, style : { color : 0xCCFF00 } }, { type : 'line', highlight:{ size:7, radius:7 }, displayName : '大票买断价', xField : 'date', yField : 'price2', markerConfig:{ type:'circle', size:4, radius:4, 'stroke-width':0 }, style : { color : 0xCC0000 } }, { type : 'line', highlight:{ size:7, radius:7 }, displayName : '当天出款价', xField : 'date', yField : 'price3', markerConfig:{ type:'cross', size:4, radius:4, 'stroke-width':0 }, style : { color : 0x0033FF } }, { type : 'line', highlight:{ size:7, radius:7 }, displayName : '带票价', xField : 'date', yField : 'price4', markerConfig:{ type:'circle', size:4, radius:4, 'stroke-width':0 }, style : { color : 0x66CC00 } } ] }); //创建一个panel var chartPanel = Ext.create('Ext.panel.Panel', { id:'chartPanel', renderTo : Ext.getBody(), title : '价格统计图', layout:'border', border : false, autoScroll:true, tbar : [ '时间', { xtype : 'combo', format : 'Y-M',//显示类型 name : 'month', id : 'month', store : [ '2013-07', '2013-08', '2013-09', '2013-10', '2013-11', '2013-12', '2014-01' ], emptyText : '2013-12', editable : false }, '银行类别:', { xtype : 'combo', name : 'bankType', id : 'bankSearch', store : [ '国股', '北上南宁', '省会城商', '全国城商', '外资', '农商农合', '信用社村镇' ], emptyText : '国股', editable : false }, '-', { text : '查询', handler : function() { chartStore.load({ params : { 'month' : Ext.getCmp('month').getValue(), 'bankType' : Ext.getCmp('bankSearch') .getValue() } }); } } ] }); chartStore.load({ params : { 'month' : '2013-12', 'bankType' : '国股' } }); }) </script> 以上是我的页面代码,如何使得折线图chart能够放入到panel中进行显示,我用的是extjs4-2-1版本,求详细解答,谢谢
改变默认extjs字体的大小?
我想改变默认extjs字体的大小,应该怎么做? AJAX读到新数据的时候播放一个小的声音提示怎么实现? 想在panel的title后面加上本机的时间,动态的那种,怎么做呢? 谢谢! :P [b]问题补充:[/b] 1、设置一个新的css样式 2、返回成功后写一个function,播放具体的一个提示音 3、参考官方example 1 To change the font. .x-grid3-hd-row td, .x-grid3-row td, .x-grid3-summary-row td { font-size: 16px; } 没反应 2 已经实现 3 哪个example [b]问题补充:[/b] 现在只剩下 想在panel的title后面加上本机的时间,动态的那种,怎么做呢?
Extjs中store问题,通过id,从后台查数据存入store中,并在panel中显示
//创建model Ext.regModel('rukuInfos',{ fields:[{name:'id'},{name: 'rukuRemark'},{name:'rukuAcount'},{name:'rukuDateTime'},{name:'rukuId'}] }); //有问题的方法 function showruku(){ var rukustore = Ext.create('Ext.data.Store', { pageSize: 6, //分页大小 model: 'rukuInfos', proxy: { pageParam:'pageNo', type: 'ajax', method: 'POST', url: 'http://localhost:8000/medicine/ProductAction_queryRukuInfo.action' ,//请求的地址 reader: { root: 'rukuInfos', totalProperty: 'rowCount' } } });// var rukuGrid = Ext.create('Ext.grid.Panel', { title: '药品入库信息列表', width: 520, height:230, id:'rukuGrid', store: rukustore, region: 'center', loadMask: true, //加载提示{ msg: '正在加载数据,请稍侯……' } columns: [//配置表格列 Ext.create('Ext.grid.RowNumberer', {text : '行号', width : 40}), {header: "入库编号", width: 160, dataIndex: 'rukuId'}, {header: "入库时间", width: 100, dataIndex: 'rukuDateTime' , xtype : 'datecolumn',//Ext.grid.column.Date日期列 format : 'Y-m-d'//日期格式化字符串 }, {header: "入库数量", width: 100, dataIndex: 'rukuAcount', xtype: 'numbercolumn', format:'000.0' }, {header: "入库备注", width: 120, dataIndex: 'rukuRemark'} ], dockedItems: [ { xtype: 'pagingtoolbar', store: rukustore, // same store GridPanel is using dock: 'bottom', //分页的位置 emptyMsg: '没有数据', displayInfo: true, displayMsg: '当前显示{0}-{1}条记录 / 共{2}条记录 ', beforePagetext: '第', afterPagetext: '页/共{0}页' }] }); //初始加载第1页 rukustore.loadPage(1); var winruku= new Ext.window.Window({ layout:'fit', width:535, resizable : false, shadow : true, modal :true, plain: true, disabled : false, closable:true, items:rukuGrid }); var proList = getProductIdList(); var num = proList.length; if(num > 1){ Ext.MessageBox.alert("提示","每次只能查看一条药品的入库信息。"); }else if(num == 1){ winruku.setTitle("显示该药品入库信息"); winruku.show(); var id = proList[0]; alert(id); //从后台加载数据 Ext.Ajax.request({//如果报length为空,一般要新建一个model来弄 url : 'http://localhost:8000/medicine/ProductAction_queryRukuInfo.action' , method : 'get', params : {proid:id}, jsonData : { proid:id }, success : function(response) { var data = Ext.JSON.decode(response.responseText).rukuInfos; var json = eval("(" + response.responseText + ")"); rukucunstore = new Ext.data.Store( { model : 'rukuInfos', proxy : { pageParam:'pageNo', type : 'memory', reader : { type : 'json', root:'rukuInfos'//注意mode1的值一定要与后台的一致 } } }); rukucunstore.load(data); Model = rukucunstore.Model; alert(rukucunstore.data); } }); } //取得所选药品id function getProductIdList(){ var recs = proGrid.getSelectionModel().getSelection(); var list = []; if(recs.length == 0){ Ext.MessageBox.alert('提示','请选择要进行操作的药品!'); }else{ for(var i = 0 ; i < recs.length ; i++){ var rec = recs[i]; list.push(rec.get('id')); } } return list; }
ExtJs表格数据不显示,但是数据已经相应到前台
``` var vstore = new Ext.data.JsonStore({ url : 'EmployeeServlet?action=getAll', root : "result", fields : ["id", "name", "password", "email", "bornDate", "intro"] }); vstore.load(); var grid = new Ext.grid.EditorGridPanel({ title : "雇员列表", store : vstore, height : 400, width : 800, columns : [{ header : "ID", dataIndex : "id", sortable : true }, { header : "姓名", dataIndex : "name", editor : new Ext.form.TextField() }, { header : "密码", width : 100, dataIndex : "password" }, { header : "电子邮件", dataIndex : "email", handler : function(v) { return v.link(v); } }, { header : "出生日期", width : 120, dataIndex : "bornDate", sortable : true, editor : new Ext.form.DateField(), renderer : function(v) { return v.format("Y-m-d"); } }, { header : "简介", dataIndex : "intro" }] }); grid.render(Ext.getBody()); ```
Dwr调用Java类,返回的JavaBean在前台Extjs中的类型问题
[b]1:需要返回的JavaBean[/b]: [code="java"] package cn.dzq.test; public class info { private long id; private String name; private int sex; private String email; private String tel; private String addTime; private String descn; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getAddTime() { return addTime; } public void setAddTime(String addTime) { this.addTime = addTime; } public String getDescn() { return descn; } public void setDescn(String descn) { this.descn = descn; } @Override public boolean equals(Object obj) { if(obj instanceof info){ info in=((info)obj); if((in.getId()==this.id)&&(in.getName().equals(this.name))&&(in.getSex()==this.sex)&&(in.getDescn().equals(this.descn))&&(in.getAddTime().equals(this.getAddTime()))&&(in.getTel().equals(this.tel))) { return true; } } return false; } @Override public String toString() { return this.id+"\t"+this.name; } } [/code] [b]2:Dwr调用的后台方法类:[/b] [code="java"] package cn.dzq.test; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class InfoManager extends HibernateDaoSupport{ public List<info> getResult() { List<info> list=this.getHibernateTemplate().find(" from info"); for(int i=0;i<list.size();i++){ System.out.println(i+":\t"+((info)list.get(i)).getName()); //验证返回的List不为空 } return list; } } [/code] [b]3:Spring,hibernate,以及dwr与sring的整合的配置都没有问题,我把dwr的配置片段放在下面(其他部分没有错误)[/b] [code="java"] <create javascript="info" creator="spring"> <param name="beanName" value="test1"></param> </create> <create match="cn.dzq.test.info" converter="bean"/> [/code] [b]4:前台ExtJs测试代码片段(我前台是个grid想在这里直接用store.loadData(data)装载数据,):[/b] [code="java"] Ext.onReady(function() { var cm = new Ext.grid.ColumnModel([ { header : '编号', dataIndex : 'id' }, { header : '名称', dataIndex : 'name' }, { header : '性别', dataIndex : 'sex' }, { header : '邮箱', dataIndex : 'email' }, { header : '电话', dataIndex : 'tel' }, { header : '添加时间', dataIndex : 'addTime' }, { header : '备注', dataIndex : 'descn' } ]); var store = new Ext.data.JsonStore({ fields : ['id', 'name', 'sex', 'email', 'tel','addTime', 'descn'] }); // 调用DWR取得数据 info.getResult(function(data) { alert(data);//问题就在和这里,alert的只有一个逗号 for(var i=0;i<data.length;i++){ alert(data[i]); /*每次循环的结果都是null,但当换成String是可以打出来 我分析是在这里不识别后台的bean 但是我的都配置了啊,不知道什么原因???*/ } alert("data:" + data); store.loadData(data); }); var grid = new Ext.grid.GridPanel({ renderTo : 'grid', store : store, cm : cm }); }) [/code] [b]5:我的问题是:[/b] 这个时候前台答应出来的data只有一个逗号,循环data发现每项都是空的,但这个时候后台返回的list确实不是空的。 我另外写了测试代码,要是返回的是基本类型,或者是String在前台就可以直接调用,那么对于这种bean的返回怎么处理? 我配置了转换器:<create match="cn.dzq.test.info" converter="bean"/> 怎么没有起到作用啊? 请各位帮忙看看,现在这里谢了。 [b]问题补充:[/b] 楼上这位哥们【hiphunter921 (初级程序员)】 你的写法我试过了 还是不对的 问题的本质不是怎么在前台循环后台来的List 而是在前台就根本不识别后台的JavaBean 即:List<info> [b]问题补充:[/b] 哈哈 太幼稚了 都是粗心惹得祸 我一直把 <create match="cn.dzq.test.Info" converter="bean"/> 看成: <convert match="cn.dzq.test.Info" converter="bean"/> 多谢路上哥们(hiphunter921 )指点 散分了
extjs 说不是构造函数 大神来帮忙看看
![图片说明](https://img-ask.csdn.net/upload/201709/30/1506737832_55428.png) ![图片说明](https://img-ask.csdn.net/upload/201709/30/1506737849_563986.png) ``` var grid_gxcw = Ext.define('grid_widget_gxcw',{ extend:'Ext.grid.Panel', alias:'widget.gridgxcw', initComponent:function(){ Ext.apply(this,{ store: store_GXCW, id: 'gridGXCW', columnLines: true, layout: 'fit', viewConfig: {forceFit: true}, columns: [ { text: '线路名称', dataIndex: 'XLMC', flex: 1, renderer: function (value) { if (value) { return value; } else return '-'; } }, { text: '安装地址', dataIndex: 'ADDRESS', flex: 1, renderer: function (value) { if (value) { return value; } else return '-'; } }, { text: '最高温(℃)', dataIndex: 'B_MAX_VALUE', flex: 1, renderer: function (value) { if (value) { return value; } else return '-'; } }, { text: '当前时间', dataIndex: 'B_CUR_TIME', flex: 1, renderer: function (value) { if (value) { return value; } else return '-'; } }, { text: '运行编号', dataIndex: 'YXBH', flex: 1, renderer: function (value) { if (value) { return value; } else return '-'; } }, { text: '备注', dataIndex: 'REMARK', flex: 1, renderer: function (value) { if (value) { return value; } else return '-'; } } ] }); this.callParent(arguments); }, listeners: { 'itemcontextmenu': itemcontextmenu } }); ```
这是网上找的extjs3.4的代码(可以运行),需要做哪些更改升级为4.2的,谢谢大神们。学习当中
Ext.onReady(function () { Ext.QuickTips.init(); //HtmlEditor需要这个,不加,编辑时不提示 var sm = new Ext.grid.CheckboxSelectionModel({ handleMouseDown: Ext.emptyFn }); var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), //显示行号 sm, { header: '编号', dataIndex: 'ID', sortable: true }, { header: '姓名', dataIndex: 'Names' }, { header: '时间', dataIndex: 'Date', renderer: Ext.util.Format.dateRenderer('Y-m-d') }, { header: '描述', dataIndex: 'Descn' } ]); //创建数据源 var store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '1' }), reader: new Ext.data.JsonReader({ totalProperty: 'totalCount', root: 'roots' }, [ { name: "ID" }, { name: "Names" }, { name: "Date", dateFormat: 'Y-m-d', convert: function (v) { if (v == null) { return null; } var d = new Date(); var str = v.toString(); var str1 = str.replace("/Date(", ""); var str2 = str1.replace(")/", ""); var dd = parseInt(str2); d.setTime(dd); return d; } }, { name: "Descn" } ]) }); //加载数据 store.load({ params: { start: 0, limit: 5 } }); //创建form表单 var frm = new Ext.form.FormPanel({ id: "frmDemo", frame: true, lableWidth: 75, lableAlign: "right", items: [ { xtype: "hidden", id: "types" }, { xtype: "numberfield", fieldLabel: "编号", id: "id", allowNegative: false, allowBlank: false, blankText: "请输入有效的整数" }, { xtype: "textfield", fieldLabel: "姓名", id: "name" }, { xtype: "datefield", fieldLabel: "日期", id: "date", format: "Y-m-d" }, { xtype: "textfield", fieldLabel: "描述", id: "descn" } ] }); //创建窗体 var window = new Ext.Window({ title: '基本信息', width: 400, height: 300, minWidth: 300, minHeight: 200, closeAction: 'hide', modal: true, //弹窗遮层 plain: true, //与背景色保持协调 bodyStyle: 'padding:5px;', buttonAlign: 'center', items: frm, //添加内容 buttons: [ { text: '提交', handler: function () { var types = Ext.getCmp("types").getValue(); var id = Ext.getCmp("id").getValue(); var name = Ext.getCmp("name").getValue(); var date = Ext.getCmp("date").getValue(); var descn = Ext.getCmp("descn").getValue(); if (types == "add") { if (id.lenght < 1 || name.lenght < 1 || date.lenght < 1 || descn.lenght < 1) { Ext.MessageBox.alert("提示", "请填写完整的数据"); return; } Ext.Ajax.request({ url: "3", method: "post", params: { id: id, name: name, date: date, descn: descn }, success: function (response, opts) { if (response.responseText == "false") { Ext.MessageBox.alert("提示", "添加失败"); return; } Ext.MessageBox.alert("提示", "添加成功"); window.hide(); store.reload(); Ext.getCmp("id").setValue(""); Ext.getCmp("name").setValue(""); Ext.getCmp("date").setValue(""); Ext.getCmp("descn").setValue(""); } }); } else if (types == "update") { if (id.lenght < 1 || name.lenght < 1 || date.lenght < 1 || descn.lenght < 1) { Ext.MessageBox.alert("提示", "请填写完整的数据"); return; } Ext.Ajax.request({ url: "2", method: "post", params: { id: id, name: name, date: date, descn: descn }, success: function (response, opts) { if (response.responseText == "false") { Ext.MessageBox.alert("提示", "修改失败"); return; } Ext.MessageBox.alert("提示", "修改成功"); window.hide(); store.reload(); Ext.getCmp("id").setValue(""); Ext.getCmp("name").setValue(""); Ext.getCmp("date").setValue(""); Ext.getCmp("descn").setValue(""); } }); } } }, { text: "重置", handler: function () { Ext.getCmp("id").setValue(""); Ext.getCmp("name").setValue(""); Ext.getCmp("date").setValue(""); Ext.getCmp("descn").setValue(""); } } ] }); //创建显示面板 var grid = new Ext.grid.GridPanel({ autoHeight: true, forceFit: true, //智能分配每列宽度 loadMask: true, //未加载前显示loading... store: store, stripeRows: true, //斑马线 sm: sm, cm: cm, tbar: [ { xtype: "button", text: "添加", handler: function (btnAdd) { Ext.getCmp("types").setValue("add"); Ext.getCmp("id").setValue(""); Ext.getCmp("name").setValue(""); Ext.getCmp("date").setValue(""); Ext.getCmp("descn").setValue(""); window.show(); } }, { xtype: "button", text: "删除", handler: function (btnDel) { var gd = btnDel.ownerCt.ownerCt; var st = gd.getStore(); var data = gd.getSelectionModel().getSelections(); if (data.length == 0) { Ext.MessageBox.alert("提示", "请至少选择一条数据删除"); return; } else { if (confirm('是否删除选中的信息?')) { var ids = ""; for (var i = 0; i < data.length; i++) { ids += data[i].json.ID + ","; } Ext.Ajax.request({ url: "4", params: { ids: ids }, method: "post", success: function (response, opts) { if (response.responseText == "false") { Ext.MessageBox.alert("提示", "删除失败"); return; } Ext.MessageBox.alert("提示", "删除成功"); store.reload(); } }); } } } }, { xtype: "button", text: "修改", handler: function (btnUpdate) { var gd = btnUpdate.ownerCt.ownerCt; var st = gd.getStore(); var data = gd.getSelectionModel().getSelections(); if (data.length != 1) { Ext.MessageBox.alert("提示", "请选择一条信息进行修改"); return; } var emp = data[0]; Ext.getCmp("types").setValue("update"); Ext.getCmp("id").setValue(emp.json.ID); Ext.getCmp("name").setValue(emp.json.Names); Ext.getCmp("date").setValue(emp.json.Date); Ext.getCmp("descn").setValue(emp.json.Descn); window.show(); } } ], bbar: new Ext.PagingToolbar({ pageSize: 5, store: store, displayInfo: true, displayMsg: '显示第{0}条到{1}条记录,一共{2}条', emptyMsg: "没有记录", plugins: new Ext.ux.ProgressBarPager() //分页进度条 }), viewConfig: { columnsText: '显示的列', forceFit: true, sortAscText: '升序', /*调试成可用的*/ sortDescText: '降序' }, autoExpandColumn: 'Descn', collapsible: true, animCollapse: false }); //渲染 grid.render('grid'); });
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问