后台怎样获取jsp页面表格中一行数据的id

表格如图所示:图片说明
如果要修改或删除数据,并将结果反馈到数据库中,怎样获取这一行数据的管理员名称

3个回答

将id放在一个input的value中,将这个input隐藏,然后在删除的时候,获取对应的input的value就可以了。

qq_32613641
君念愁 学的比较菜,麻烦能不能给个例子
大约 3 年之前 回复

你服务器对应记录有管理员名称吧,读出来不就行了。你客户端做的话别人就可以乱传递管理员名称数据了,如果你确认客户端做就

table.rows[1].cells[0].innerHTML就是表格第二行,第一列的数据

你修改删除的时候把id值写到地址上呗。问号的那种。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
跨jsp页面传递table指定行数据
[size=xx-small][/size]现在有一张表格table,如图一所示,其中有一个操作列,添加了一个链接“预审”,我想通过点击这个链接进入另外一个jsp页面,同时把按钮左在行的几格单元格数据传递到这个页面,如图二所示的名称、状态、日期等。我这个表格是用dwr的addrows方法动态生成的。 [color=red]html代码[/color] [code="java"] <body onload = "init()"> <table> <tr> <table border = "0" width = '200' height = '20' > <thead> <tr class = "tabTitle"> <th><a href="#" onclick="tabPageControl(0)">未审核项目</a></th> <th><a href="#" onclick="tabPageControl(1)">已审核项目</a></th> </tr> </thead> </table> </tr> <tr> <td> <div id="tabContents"> <table id="tabPagesContainer" style="BORDER-RIGHT: gainsboro 1px; BORDER-TOP: gainsboro 1px; BORDER-LEFT: gainsboro 1px; COLOR: black; BORDER-BOTTOM: gainsboro 1px; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: white" cellSpacing=0 cellPadding=4 rules=cols border=1> <thead> <tr style="FONT-WEIGHT: bold; COLOR: white; BACKGROUND-COLOR: #2b6fbd"> <th scope=col width="15%"> 项目名称 </th> <th scope=col width="10%"> 提交人 </th> <th scope=col width="12%"> 项目类别 </th> <th scope=col width="12%"> 项目状态 </th> <th scope=col width="12%"> 提交时间 </th> <th scope=col width="12%"> 附件 </th> <th scope=col width="12%"> 审核记录 </th> <th scope=col width="15%"> 操作 </th> </tr> </thead> <tbody id="peoplebody" class="tabPageSelected"> </tbody> <tbody id="peoplebody2" class="tabPageUnSelected"> </tbody> </table> </div> </td> </tr> </body> [/code] [color=red]javasc代码[/color] [code="java"] <script type="text/javascript"> function showList(tableIndex) { var sql0 = "select distinct XMMC,TBR,XMLB,XMZT,SQSJ from BASQB as B left join JWYSB as J on (B.XM_ID=J.XM_ID) where (XMZT='备案预审'or XMZT='变更预审') and J.SHZT='未审核'"; var sql1 = "select distinct XMMC,TBR,XMLB,XMZT,SQSJ from BASQB as B left join JWYSB as J on (B.XM_ID=J.XM_ID) where (XMZT='备案预审'or XMZT='变更预审') and J.SHZT='已审核'"; var sql =""; if(tableIndex==0) sql=sql0; else sql=sql1; var msg = tableIndex; var tableId =""; hzglDao.findXmshInfo(sql, function(stu){ //dwr调用后台java代码 callbackFunc(stu,msg,tableId); }); var callbackFunc = function(stu,msg,tableId){ if(msg==0){tableId = "peoplebody"} else if(msg==1){tableId = "peoplebody2"} for(var i=0;i<stu.length;i++){ var cellfuncs = [ function(item){return item.xmmc;}, function(item){return item.tbr;}, function(item){return item.xmlb;}, function(item){return item.xmzt;}, function(item){return item.sqsj;}, function(item){ var html = "<a href='#' onClick='_view();return false'>查看 </a> "; return html; }, function(item){ var html = "<a href='#' onClick='_view();return false'>查看 </a> "; return html; }, function(item){ var html = "<a href='#' onClick='_view1();return false'>预审 </a>"; return html; } ]; //在每一次点击按钮前先删除现在表格中的数据, DWRUtil.removeAllRows(tableId); //调用addRows方法,填充表格. DWRUtil.addRows(tableId,stu,cellfuncs); }//for }//callbackFunc }//showList function tabPageControl(n) { for (var i = 0; i < tabPagesContainer.tBodies.length; i++) { tabPagesContainer.tBodies[i].className = "tabPageUnSelected"; } tabPagesContainer.tBodies[n].className = "tabPageSelected"; if(n==0) showList(0); else if(n==1) showList(1); else if(n==2) showList(2); } function _view1() { window.location.href ='xmysInfoView.jsp'; } function _view2() { window.location.href ='xmshInfoView.jsp'; } function init() { showList(0); } </script> [/code] [b]问题补充:[/b] [code="java"] function(item){ var xmmc = item.xmmc; var html = "<a href='#' onClick='_view1("+xmmc+");return false'>预审 </a>"; return html; }[/code] 我把这段代码改了一下,这样点击某一行的时候获取该行的项目名称的内容,现在点第一行的时候IE报错提示房产项目4未定义,点击第二行IE提示教育项目7未定义。我想现在的问题可能是给“_view1()”传参数时字符串格式有问题,不知怎么改?
JSP中怎样让一个按钮只处理对应行的数据?
``` <% Connection conn=null; Statement stat=null; ResultSet rs=null; Class.forName("com.mysql.jdbc.Driver").newInstance(); String url="jdbc:mysql://localhost:3306/app?user=root&password=000000"; conn=DriverManager.getConnection(url); stat=conn.createStatement(); rs=stat.executeQuery("select * from t_user"); while(rs.next()){ %> <tr align="center"> <td><%= rs.getString("ord") %></td> <td><%= rs.getString("pro") %></td> <td><%= rs.getString("name") %></td> <td><input type="hidden" id="state" value="已处理"> <input type="button" value="处理" onclick="modify()"> </td> </tr> <% }%> <script type="text/javascript"> function modify(){ var ord=$("#ord").val(); var pro=$("#pro").val(); var name=$("#name").val(); var state=$("#state").val(); $.ajax({ url:encodeURI(encodeURI('/application/user/updatestate')), type:'get', cache:false, success:function() { alert("处理成功!"); window.location.href="/application/user/index"; }}); } </script> ``` 以上是我代码的一些片段,后台调用的java方法就不贴出来了,只是比较简单的update方法,而且也并没有实现预想的功能。 我这段代码是从MySql数据库中读取数据,然后依次显示在表格中,预想实现的功能是点击每一行数据后的“处理”按钮后,就将该行数据在数据库中对应的state值改为“已处理”,现在后台方法能够运行,state值也能更改,但是问题是,无论点击哪一行数据后的“处理”按钮,都只会改变第一行数据的state值,对该行数据并不起作用,我就想到用select进行筛选并修改对应值,可是也没有用,请问我预想的这个功能应该如何实现呢?
怎么获取复选框所对应的这行数据,然后在jsp页面将其隐藏掉???
``` //删除功能 $(function(){ var del; $("#dell").click(function(){ $("input:checkbox:checked").each(function(index,element){ del = $("input:checkbox[name='chkItem']:checked").map(function(index,elem) { return $(elem).val(); }).get().join(','); }) alert(del); $.ajax({ url:"http://localhost:8080/MESS/Q001_del_delete", type:"post", dataType:"json", data:{"proNo":del}, success:function(rs){ if(rs.status == 0){ alert(rs.msg); //为什么就是隐藏不了呢? $('#TQQ').hide()-----这个就是问题所在就是隐藏不了。。。。。 TSM_QPM_Q001(); }else{ alert(rs.msg); TSM_QPM_Q001(); } }, error:function(){ alert("删除加载失败 "); } }); }); }); ``` ``` //出现本页面数据就同步显示在表格中 $(function(){ TSM_QPM_Q001(); }); //进行一个函数的调用 function TSM_QPM_Q001(){ $.ajax({ url:"http://localhost:8080/MESS/getData", type:"get", datatype:"json", success:function(res){ var htmlStr =''; for(var i=0;i < res.length;i++){ var plo = res[i].proNo; //var wkStationNo = res[i].wkStationNo; htmlStr += '<tr id="myLine_'+res[i].proNo+'">'; htmlStr += '<td><input type="checkbox" id="TQQ" name="chkItem" value ="'+plo+'"></td>'; htmlStr += '<td>'+res[i].proNo+'</td>'; htmlStr += '<td>'+res[i].wkStationNo+'</td>'; htmlStr += '<td>'+res[i].stGrdNo+'</td>'; htmlStr += '<td>'+res[i].cItemName+'</td>'; htmlStr += '<td>'+res[i].cItemValue+'</td>'; htmlStr += '<td>'+res[i].wkGroup+'</td>'; htmlStr += '<td>'+res[i].wkShift+'</td>'; htmlStr += '<td>'+res[i].delFlage+'</td>'; htmlStr += '<td>'+res[i].c_memd+'</td>'; htmlStr += '<td>'+res[i].c_delsapman+'</td>'; htmlStr += '<td>'+res[i].cDelsapdate+'</td>'; htmlStr += '<td>'+res[i].cTimestamp+'</td>'; htmlStr += '<td>'+res[i].cSampleTime+'</td>'; htmlStr += '<td>'+res[i].cSw01+'</td>'; htmlStr += '<td>'+res[i].cMin+'</td>'; htmlStr += '<td>'+res[i].cMax+'</td>'; htmlStr += '<td>'+res[i].l_interval+'</td>'; htmlStr += '<td>'+res[i].r_interval+'</td>'; //htmlStr += '<a href="javascript:del('+res[i].id+')">删除</a>'; htmlStr += '</tr>'; } $("#myLine").html(htmlStr); }, error:function(){ alert("出错了!"); } }); } ``` 效果图如下: ![图片说明](https://img-ask.csdn.net/upload/201712/28/1514438430_383402.png) 现在的问题是怎么将图片中的复选框选中然后点删除按钮这条数据就消失了?其实就是隐藏。。后台数据都写好了。。就差这里怎么将选中的数据进行隐藏??
JSP中的一个传值问题 求解!
有两个jsp文件,前端文件有一个表格,可以点击界面按钮增加行数,并向表格内填入数据,如何将表中数据插入数据库? ## # **难点在于点击按钮增加的行name是重复的,怎么办?** 前端界面 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*"%> <jsp:useBean id="connDB" scope="page" class="com.lah.ToolBean.Conn" /> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>填写出货单</title> </head> <body> <center> <h1>出货单填写</h1> <tr> <td align="right">出货单号:</td> <td><input type="text" name="IncomeOrderNumber" style="width: 300px;"></td> </tr> <form > <table width="80%" id="tbl" border="1" align="center"> <tr> <td>货物编号</td> <td>货物名称</td> <td>货物数量</td> </tr> <tr> <td><input type=text name=ProductCode /></td> <td><input type=text name=ProductName /></td> <td><input type=text name=ProductNum /></td> </tr> </table> <input type="button" value="添加" onclick="insert_row(ProductCode,ProductName,ProductNum,IncomeOrderNumber.value)" /> </form> </center> <script type="text/javascript"> function insert_row(ProductCode,ProductName,ProductNum,IncomeOrderNumber) { //下面这些就是增加行用的 R = tbl.insertRow() //insertRow() 方法用于在表格中的指定位置插入一个新行。 C = R.insertCell() //insertCell() 方法用于在 HTML 表的一行的指定位置插入一个空的 <td> 元素。 C.innerHTML = "<input type='text' name='ProductCode' />" C = R.insertCell() C.innerHTML = "<input type='text' name='ProductName' />" C = R.insertCell() C.innerHTML = "<input type='text' name='ProductNum' />" C = R.insertCell() C.innerHTML = "<input type='button' value='删除' onclick='deleteRow(this)'>" } //用来删除行 function deleteRow(obj) { alert("确定删除吗?"); tbl.deleteRow(obj.parentElement.parentElement.rowIndex); } </script> </body> </html> ``` ``` //后台 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="java.sql.*"%> <jsp:useBean id="connDB" scope="page" class="com.lah.ToolBean.Conn" /> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <% request.setCharacterEncoding("utf-8"); String number = request.getParameter("IncomeOrderNumber"); String ProductCode = request.getParameter("ProductCode"); String ProductName = request.getParameter("ProductName"); String ProductNum = request.getParameter("ProductNum"); String str = "select * from [IncomeOrder] where Number='" + number + "'"; ResultSet rs = connDB.executeQuery(str); if (rs.next()) { %> <script type="text/javascript"> alert("该单号已经存在"); history.back(); </script> <% } else try { String strSql = "insert into [IncomeOrder] values('" + number + "','" + ProductCode + "','" + ProductName + "','" + ProductNum + "')"; int t = connDB.executeUpdate(strSql); if (t == 0) { %> <script type="text/javascript"> alert("增加失败!"); history.back(); </script> <% } else { response.sendRedirect("success.jsp"); } } catch (Exception e) { System.err.println(e.getMessage()); } %> </body> </html> ``` 谢谢各位l
请大家帮忙看看我的json数据和struts2后台交互的问题
搞了很久,就是不出数据,快崩溃了,action中System.out.println();没问题,json的格式也是正确的,但在js里面就是死活取不到,请大家帮忙看看,谢谢了!! <br />js: <br />Ext.onReady(function(){ <br />&nbsp;&nbsp;&nbsp; var ds = new Ext.data.JsonStore({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy : new Ext.data.HttpProxy({url:'List.action',method:'POST'}), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader: new Ext.data.JsonReader({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; successProperty: "successproperty", <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totalProperty: 'totalProperty', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root: 'root', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fields: [ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'userId','userName','password','email' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ] <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }) <br />&nbsp;&nbsp;&nbsp; }); <br />&nbsp;&nbsp;&nbsp; //alert(ds.getCount()) ;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; //alert(ds.getAt(0).get("userName")) ; <br />&nbsp;&nbsp;&nbsp; var colModel = new Ext.grid.ColumnModel([ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {id:'title',header:'ID',width:50,sortable:true,dataIndex:'userId'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'用户名', width:100,sortable:true,dataIndex:'userName'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'密码明码',width:100,sortable:true,dataIndex:'password'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'电子邮件',width:100,sortable:true,dataIndex:'email'} <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]); <br />&nbsp;&nbsp;&nbsp; var tb = new Ext.Toolbar("north-div"); <br />&nbsp;&nbsp;&nbsp; tb.add({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '添加', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tooltip:'Add a new row', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls:'add', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler: newUser <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '编辑', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tooltip:'edit a new row', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls:'option', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler: editUser <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '删除', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tooltip:'delete a new row', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls:'remove', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler: delUser <br />&nbsp;&nbsp;&nbsp; }); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; var grid = new Ext.grid.GridPanel({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; border:false, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region:'south', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:500, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loadMask: true, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el:'center', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:'用户列表', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store: ds, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm: colModel, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autoScroll: true, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bbar: new Ext.PagingToolbar({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageSize: 20, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store: ds, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; displayInfo: true, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; displayMsg: '第{0} 到 {1} 条数据 共{2}条', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptyMsg: "没有数据" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }); <br />&nbsp;&nbsp;&nbsp; var viewport = new Ext.Viewport({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; layout:'border', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; items:[{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; border:false, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region:'north', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contentEl:'north-div', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tbar:tb, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:26 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]} <br />&nbsp;&nbsp;&nbsp; ); <br />&nbsp;&nbsp;&nbsp; ds.load({params:{start:0, limit:20}}); <br />}); <br /> <br />action: <br /> <br />package part1.action; <br /> <br />import java.io.PrintWriter; <br />import java.util.List; <br />import java.util.Map; <br /> <br />import javax.servlet.http.HttpServletRequest; <br />import javax.servlet.http.HttpServletResponse; <br /> <br />import net.sf.json.JSONArray; <br />import net.sf.json.JSONObject; <br /> <br />import org.apache.struts2.ServletActionContext; <br /> <br />import part1.model.Appuser; <br /> <br />import com.opensymphony.xwork2.ActionContext; <br /> <br />public class ListAction extends BaseAction { <br /> <br /> String jsonString; <br /> <br /> public String getJsonString() { <br /> return jsonString; <br /> } <br /> <br /> public void setJsonString(String jsonString) { <br /> this.jsonString = jsonString; <br /> } <br /> <br /> public String execute() throws Exception{ <br /> <br /> ActionContext ctx = ActionContext.getContext(); <br /> Map session = ActionContext.getContext().getSession(); <br /> HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); <br /> HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE); <br /> response.reset(); <br /> response.setCharacterEncoding("utf-8"); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //PrintWriter pw = response.getWriter(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List appusers = null; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appusers = mgr.getAppusers(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSONArray array = new JSONArray(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSONObject json = new JSONObject(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(appusers != null &amp;&amp; appusers.size() &gt; 0){ <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;appusers.size();i++){ <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSONObject row = new JSONObject(); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Appuser user_temp = (Appuser)appusers.get(i); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row.put("userId",user_temp.getUserId()); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row.put("userName", user_temp.getUserName()); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row.put("password",user_temp.getPassword()); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row.put("email", user_temp.getEmail()); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array.add(row); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; json.put("successproperty", true); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; json.put("totalProperty", appusers.size()); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; json.put("root", array); <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.jsonString = json.toString(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "sucess"; <br /> } <br /> <br />} <br /> <br /><br /><strong>问题补充:</strong><br />{"successproperty":true,"totalProperty":1,"root":[{"userId":1,"userName":"sa","password":"1","email":"1@1.1"}]} <br />这个是System.out.println(jsonString);打出来的 <br /> <br />我把response.getWriter().println(jsonString);加上了也是没数据,才开始研究ext没多久,谢谢回贴!<br /><strong>问题补充:</strong><br />fields: [ <br />&nbsp;&nbsp;&nbsp; {'userId'},{'userName'},{'password'},{'email'} <br />&nbsp;&nbsp; ] 这样子加上报错- -++<br /><strong>问题补充:</strong><br />各位看看啦!!~~<br /><strong>问题补充:</strong><br />我在js里面加这么一句: <br />ds.on('loadexception',function(t,o,a,e){alert('ex = '+e+',this = '+t+',o = '+o+',a = '+a);}); <br />其中e打出来是[Object Error] <br />不知道是什么原因?<br /><strong>问题补充:</strong><br />目前页面上可以打出json的字符串{"root":[{"userId":1,"userName":"sa","password":"1","email":"1@1.1"}],"totalProperty":1,"successproperty":true} <br />但跳不到jsp里面了。。<br /><strong>问题补充:</strong><br />我的意思是,现在页面只打出个json字符串,不显示表格什么其他的元素了<br /><strong>问题补充:</strong><br />我的就是先访问List.action然后打算进入List.jsp显示action取出的数据呀 <br />但打出的就是一堆数据串,页面出不来<br /><strong>问题补充:</strong><br />试了把successproperty去掉,把JsonStore换成Ext.data.Store还是只打出字串。。<br /><strong>问题补充:</strong><br />好像和region:"center"也没什么关系,现在的唯一问题是不出页面- -|| <br />谢谢两位回贴!<br /><strong>问题补充:</strong><br />我如果先要访问一个action去取数据,然后在跳到一个jsp页面显示数据,这么写对么?<br /><strong>问题补充:</strong><br />请把你第一个item内容取得,再把grid的region设置为center,你的页面就可以出现。 <br /> <br />--------这句话没懂- -|| <br /><br /><strong>问题补充:</strong><br />是直接写 <br />var viewport = new Ext.Viewport({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]} <br />&nbsp;&nbsp;&nbsp; ); 吗?<br /><strong>问题补充:</strong><br />目前我的访问流程是:login.html-&gt;submit-&gt;LoginAction-&gt;success后返回login.html-&gt;再进入ListAction-&gt;list.jsp <br />这个要是用extjs看的话是不是有问题?<br /><strong>问题补充:</strong><br />grid中region设置为center也是不显示页面,只有数据- - <br /> <br />{"root":[{"userId":1,"userName":"sa","password":"1","email":"1@1.1"},{"userId":2,"userName":"1","password":"1","email":"1"},{"userId":3,"userName":"2","password":"2","email":"2"},{"userId":4,"userName":"3","password":"3","email":"3"},{"userId":5,"userName":"4","password":"4","email":"4"},{"userId":6,"userName":"5","password":"5","email":"5"},{"userId":7,"userName":"6","password":"6","email":"6"},{"userId":8,"userName":"7","password":"7","email":"7"},{"userId":9,"userName":"8","password":"8","email":"8"},{"userId":10,"userName":"9","password":"9","email":"9"}],"totalProperty":10} <br /> <br /> <br />我去吃点东西,一会回来,非常感谢!<br /><strong>问题补充:</strong><br />tb那段是需要在jsp里面加上 <br />&lt;div id="north-div"&gt;&lt;/div&gt; <br />这一行~ <br /> <br />现在问题就是如果我先访问list.action,然后return null; <br />就直接打出字符串,没进jsp- -<br /><strong>问题补充:</strong><br />晕,有点乱了。。。我才接触extjs没多久 <br /> <br />我的意思是,我要在数据库里取一个list,显示在jsp上,如果是struts或者是struts2的话就是先访问ListAction取数据,然后mapping转向到jsp,页面就出来了。 <br />但Extjs也是如此吗?我有点晕了。。<br /><strong>问题补充:</strong><br />我把js改了一个简单的 <br />Ext.onReady(function(){ <br />&nbsp;&nbsp;&nbsp; Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif'; <br />&nbsp;&nbsp;&nbsp; Ext.QuickTips.init(); <br />&nbsp;&nbsp;&nbsp; var sm = new Ext.grid.CheckboxSelectionModel(); <br />&nbsp;&nbsp;&nbsp; var cm = new Ext.grid.ColumnModel([ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Ext.grid.RowNumberer(), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sm, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'编号',dataIndex:'userId',sortable:true}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'用户名',dataIndex:'userName'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'密码',dataIndex:'password'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {header:'电子邮件',dataIndex:'email'} <br />&nbsp;&nbsp;&nbsp; ]); <br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; var ds = new Ext.data.Store({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy: new Ext.data.HttpProxy({url:'List.action'}), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader: new Ext.data.JsonReader({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root: 'root', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totalProperty: 'totalProperty' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, [ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'userId',mapping:'userId',type:'int'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'userName',mapping:'userName',type:'string'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'password',mapping:'password',type:'string'}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'email',mapping:'email',type:'string'} <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]) <br />&nbsp;&nbsp;&nbsp; }); <br /> <br />&nbsp;&nbsp;&nbsp; var grid = new Ext.grid.GridPanel({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el: 'center', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds: ds, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sm: sm, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm: cm, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:700, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:280, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bbar: new Ext.PagingToolbar({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageSize: 10, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store: ds, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; displayInfo: true, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptyMsg: "没有记录" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }) <br />&nbsp;&nbsp;&nbsp; }); <br /> <br />&nbsp;&nbsp;&nbsp; grid.render(); <br />&nbsp;&nbsp;&nbsp; ds.load({params:{start:0, limit:10}}); <br />&nbsp;&nbsp;&nbsp; ds.load({callback:function(records,success,totalRecords){alert('records = '+records);}}); <br />}); <br /> <br /> <br /> <br />但是也不好用- -|不知道哪里有问题<br /><strong>问题补充:</strong><br />问题好像解决了,我把ListAction查询数据的代码一起写到了LoginAction里,然后如果登录成功的话就window.location = 'List.jsp';终于出数据了! <br />谢谢两位!!非常感谢!!!
Spring MVC + Spring + Mybatis + JqGrid 前台数据显示不出来
json ``` @Controller @RequestMapping("/crud") public class UserController { @Resource(name="userServiceImpl") private UserService userService; @RequestMapping(method = RequestMethod.GET) public @ResponseBody CustomUserResponse findAllUser(){ List<UserVO> users = userService.getAllUsers(); CustomUserResponse response = new CustomUserResponse(); response.setRows(users); response.setRecords( String.valueOf(users.size()) ); response.setPage( "1" ); response.setTotal( "10" ); return response;//返回给jqGrid } } ``` jsp ``` <script type ="text/javascript"> $(function () { $("#list").jqGrid({ url: "/GridApp/crud",//获取数据的地址 datatype: "json",//从服务器端返回的数据类型,默认xml mtype: "GET",//ajax提交方式。POST或者GET,默认GET colNames: ["编号", "姓名", "性别", "年龄", "备注"],//列显示名称,是一个数组对象 /* 常用到的属性:name 列显示的名称;index 传到服务器端用来排序用的列名称; width 列宽度;align 对齐方式;sortable 是否可以排序 */ colModel: [ { name: "id", width: 55 }, { name: "name", width: 90 }, { name: "sex", width: 80, align: "right" }, { name: "age", width: 80, align: "right" }, { name: "remark", width: 80, align: "right" } ], pager: "#pager", //定义翻页用的导航栏,必须是有效的html元素。翻页工具栏可以放置在html页面任意位置 rowNum: 10, //在grid上显示记录条数,这个参数是要被传递到后台 rowList: [10, 20, 30],//一个下拉选择框,用来改变显示记录数,当选择时会覆盖rowNum参数传递到后台 sortname: "invid",//默认的排序列。可以是列名称或者是一个数字,这个参数会被提交到后台 sortorder: "desc",//排序顺序,升序或者降序(asc or desc) viewrecords: true,//定义是否要显示总记录数 emptyrecords: "Empty records",//当返回的数据行数为0时显示的信息。只有当属性 viewrecords 设置为ture时起作用 gridview: true,//构造一行数据后添加到grid中,如果设为true则是将整个表格的数据都构造完成后再添加到grid中,但treeGrid, subGrid, or afterInsertRow 不能用 autoencode: true,//对url进行编码 caption: "My first grid",//表格名称 jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: false, cell: "cell", id: "id" } }); }); </script> <body> <table id = "list" ><tr><td></td></tr></table> <div id = "pager"></div> </body> ``` 异常 严重: Servlet.service() for servlet [springmvc] in context with path [/GridApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class com.java.json.CustomUserResponse] with root cause java.lang.IllegalArgumentException: No converter found for return value of type: class com.java.json.CustomUserResponse at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178) at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:153) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:165) at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
Ie控制台报错--无法获取未定义或 null 引用的属性“mr_changed”
这段代码比较长,就是js实现动态表格添加数据,通过onblur事件实现只在修改的数据前面加上标记“1”,然后后台通过标记有选择的更新数据。但是有两个问题 1.自带数据修改onblur事件不触发 2.只有点击新增表格,新增修改表格数据,onblur才触发,但是触发后控制台报错 ----无法获取未定义或 null 引用的属性“mr_changed”。 初学者,大家帮帮忙啊 ![图片说明](https://img-ask.csdn.net/upload/201706/07/1496830756_844032.png) ``` <%@ page language="java" pageEncoding="UTF-8"%> <%@ include file="../../base.jsp"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="${ctx}/components/jquery-ui/jquery-1.2.6.js"></script> <script type="text/javascript" src="${ctx}/js/tabledo.js"></script> <script type="text/javascript" src="${ctx}/js/datepicker/WdatePicker.js"></script> <script type="text/javascript"> $().ready(function(){ ${mRecordData} }); /* 实现表格序号列自动调整 created by tony 20081219 */ function sortnoTR(){ sortno('mRecordTable', 2, 1); } function setTRUpdateFlag(obj){ //alert(obj.type); //alert(obj.defaultValue); //var mr_changed = obj.getElementById("mr_changed"); var currTr = obj.parentElement.parentElement; if(currTr.innerHTML.toLowerCase().indexOf("<span")==0){ currTr = obj.parentElement.parentElement.parentElement; } //alert(currTr.innerHTML); if(obj.value!=obj.defaultValue){ //当填写的框内容发生变化时,设置本行记录发生变化标识 currTr.cells[1].all.mr_changed.value = "1"; //document.getElementById("mr_changed").value="1"; } //alert(mr_changed.value); } function addTRRecord(objId, id, productNo, cnumber, grossWeight, netWeight, sizeLength, sizeWidth, sizeHeight, exPrice, tax) { var _tmpSelect = ""; var tableObj = document.getElementById(objId); //得到表格对象 var rowLength = tableObj.rows.length; //行数 oTR = tableObj.insertRow(); //在行尾插入行 oTD = oTR.insertCell(0); //插入一个单元格 oTD.style.whiteSpace="nowrap"; //规定段落不换行 oTD.ondragover = function(){this.className="drag_over" }; //动态加事件, 改变样式类 oTD.ondragleave = function(){this.className="drag_leave" }; oTD.onmousedown = function(){ clearTRstyle("result"); this.parentNode.style.background = '#0099cc';}; //this.style.background="#0099cc url(../images/arroww.gif) 4px 9px no-repeat"; oTD.innerHTML = "&nbsp;&nbsp;"; oTD = oTR.insertCell(1); oTD.innerHTML = "<input class=\"input\" type=\"checkbox\" name=\"del\" value=\""+id+"\"><input type=\"text\" name=\"mr_id\" value=\""+id+"\"><input class=\"input\" type=\"text\" id=\"mr_changed\" value=\"\" name=\"mr_changed\">"; oTD = oTR.insertCell(2); oTD.innerHTML = "<input class=\"input\" type=\"text\" name=\"mr_orderNo\" readonly size=\"3\" value=\"\">"; oTD = oTR.insertCell(3); oTD.innerHTML = "<b><font face='微软雅黑'><font color='blue'>"+productNo;+"</font></font></b> " oTD = oTR.insertCell(4); oTD.innerHTML = "<input type=\"text\" name=\"mr_cnumber\" maxLength=\"10\" value=\""+cnumber+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(5); oTD.innerHTML = "<input type=\"text\" name=\"mr_grossWeight\" maxLength=\"10\" value=\""+grossWeight+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(6); oTD.innerHTML = "<input type=\"text\" name=\"mr_netWeight\" maxLength=\"10\" value=\""+netWeight+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(7); oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeLength\" maxLength=\"10\" value=\""+sizeLength+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(8); oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeWidth\" maxLength=\"10\" value=\""+sizeWidth+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(9); oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeHeight\" maxLength=\"10\" value=\""+sizeHeight+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(10); oTD.innerHTML = "<input type=\"text\" name=\"mr_exPrice\" maxLength=\"10\" value=\""+exPrice+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(11); oTD.innerHTML = "<input type=\"text\" name=\"mr_tax\" maxLength=\"10\" value=\""+tax+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; dragtableinit(); //拖动表格行 sortnoTR(); //排序号 //setTRUpdateFlag(); //设置本行记录发生变化标识 } </script> </head> <body> <form method="post"> <input type="hidden" name="id" value="${obj.id}"/> <div id="menubar"> <div id="middleMenubar"> <div id="innerMenubar"> <div id="navMenubar"> <ul> <li id="save"><a href="#" onclick="formSubmit('update.action','_self');">确定</a></li> <li id="back"><a href="list.action">返回</a></li> </ul> </div> </div> </div> </div> <div class="textbox" id="centerTextbox"> <div class="textbox-header"> <div class="textbox-inner-header"> <div class="textbox-title"> 修改出口报运 </div> </div> </div> <div> <div> <table class="commonTable" cellspacing="1"> <tr> <td class="columnTitle_mustbe">客户号:</td> <td class="tableContent"><input type="text" name="customerContract" value="${obj.customerContract}"/></td> <td class="columnTitle_mustbe">制单日期:</td> <td class="tableContent"> <input type="text" name="inputDate" style="width:90px;" value="<fmt:formatDate value="${obj.inputDate}" pattern="yyyy-MM-dd"/>" onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});" readonly/> </td> </tr> <tr> <td class="columnTitle_mustbe">收货人及地址:</td> <td class="tableContent"><input type="text" name="consignee" value="${obj.consignee}"/></td> <td class="columnTitle_mustbe">L/C No.:</td> <td class="tableContentAuto"> <input type="radio" name="lcno" value="T/T" class="input" <c:if test="${obj.lcno=='T/T'}">checked</c:if>>T/T <input type="radio" name="lcno" value="L/C" class="input" <c:if test="${obj.lcno=='L/C'}">checked</c:if>>L/C </td> </tr> <tr> <td class="columnTitle_mustbe">装运港:</td> <td class="tableContent"><input type="text" name="shipmentPort" value="${obj.shipmentPort}"/></td> <td class="columnTitle_mustbe">运输方式:</td> <td class="tableContentAuto"> <input type="radio" name="transportMode" value="SEA" class="input" <c:if test="${obj.transportMode=='SEA'}">checked</c:if>>海运(SEA) <input type="radio" name="transportMode" value="AIR" class="input" <c:if test="${obj.transportMode=='AIR'}">checked</c:if>>空运(AIR) </td> <tr> <td class="columnTitle_mustbe">价格条件:</td> <td class="tableContent"><input type="text" name="priceCondition" value="${obj.priceCondition}"/></td> </tr> <tr> <td class="columnTitle_mustbe">唛头:</td> <td class="tableContent"><textarea name="marks" style="height:130px;">${obj.marks}</textarea></td> <td class="columnTitle_mustbe">说明:</td> <td class="tableContent"><textarea name="remark" style="height:130px;">${obj.remark}</textarea></td> </tr> </table> </div> </div> <div class="textbox" id="centerTextbox"> <div class="textbox-header"> <div class="textbox-inner-header"> <div class="textbox-title"> 报运下货物的列表信息 </div> </div> </div> <div> <div class="listTablew"> <table class="commonTable_main" cellSpacing="1" id="mRecordTable"> <tr class="rowTitle" align="middle"> <td width="25" title="可以拖动下面行首,实现记录的位置移动."> <img src="../../images/drag.gif"> </td> <td width="20"> <input class="input" type="checkbox" name="ck_del" onclick="checkGroupBox(this);" /> </td> <td width="33">序号</td> <td>货号</td> <td>数量</td> <td>毛重</td> <td>净重</td> <td>长</td> <td>宽</td> <td>高</td> <td>出口单价</td> <td>含税</td> </tr> </table> </div> <div style="padding:10px;"> <input type="button" name="btnAdd" value="新增" onclick="addTRRecord('mRecordTable', '', '', '', '', '', '', '', '', '', '');"/> </div> </div> <div class="textbox-bottom"> <div class="textbox-inner-bottom"> <div class="textbox-go-top"> </div> </div> </div> </div> </form> </body> </html> ```
动态表格单元的验证问题?
由于涉及到一个入库单的填写,我采用了动态表格方式提交给后台jsp处理,现在遇到的问题是,在前端页面上如何验证单价、数量等单元格???前端代码如下: [code="java"] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@ page contentType="text/html;charset=GBK"%> <%@ page import="com.chp.tool.*"%> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=gbk"> <script type="text/javascript" src="../js/jquery-1.3.2.js"></script> <script type="text/javascript"> function gotoAdd(){ var tableTrElement = $("#testTable tr");//得到表格所有行 var len = tableTrElement.length;//得到总行数 var tableElement = $("#testTable");//得到表格对象 var str= "<tr id=test"+(len+1)+">"; str+="<td ><input style=\"width:60px\" type=text value=\'\' name=\'descr1\' </td>"; str+="<td align=\'center\' ><input style=\"width:120px\" type=text value=\'\' name=\'descr2\' </td>"; str+="<td align=\'center\' ><input style=\"width:60px\" type=text value=\'\' name=\'descr3\' </td>"; str+="<td align=\'center\' ><input style=\"width:40px\" type=text value=\'\' name=\'descr4\' </td>"; str+="<td align=\'center\' ><select style=\'width:60px\' name=\'descr5\'><option selected=\'selected\'>美元</option><option>日元</option><option>欧元</option></select> </td>"; str+="<td align=\'center\' ><input style=\"width:60px\" type=text value=\'0.00\' name=\'descr6\' </td>"; str+="<td align=\'center\' ><input style=\"width:60px\" type=text value=\'0.00\' name=\'descr7\' </td>"; str+="<td align=\'center\' ><input style=\"width:40px\" type=text value=\'1\' name=\'descr8\' </td>"; str+="<td align=\'center\' ><input style=\"width:60px\" type=text value=\'\' name=\'descr9\' </td>"; str+="<td align=\'center\' ><input style=\"width:80px\" type=text value=\'\' name=\'descr10\' </td>"; str+="<td align=\'center\' ><a href=\'#\' style=\"width:80px\" onclick=\'gotoDelete("+(len+1)+")\'>删除本行</a></td>"; str+="</tr>"; tableElement.append(str); } function gotoDelete(index){ var tableTrElement = $("#testTable tr"); if(index>tableTrElement.length){ return; }else{ $("tr[id=\'test"+index+"\']").remove(); //移除id为 "test"+index 的TR } } function checkrow(){ var tableTrElement = $("#testTable tr"); if(tableTrElement.length==1){alert("请至少增加一行记录"); } else { myform.action="getinput.jsp"; myform.submit(); } } </script> </head> <body> <title> input tables </title> <br> <h2 align="center">入库单填写</h2> <% String sRKRQ = null; Format format = new Format(); java.util.Date date = new java.util.Date(); sRKRQ = format.dateToYMD(date); %> <form name="myform" method="post" id="myf"> <table id="inpu" border="0" width="90%" align="center"> <tr> <td width="25%" align="left">供货单位:<input name=ghdw type="text" value="" size="45" class="tex1" /> </td> <td width="15%" align="left">入库日期(yyyy-mm-dd):<input name=rkrq type=text value=<%=sRKRQ %> size="10" class="tex1"/> </td> <td width="15%" align="right">入库单号:<input name=rkdh type=text value="" size="10" class="tex1" /> </td> </tr> </table> <table id="testTable" width="98%" align="center" cellpadding="0" cellspacing="0" border="1px solid black"> <tr id=test1000 style="background-color:#009999; height=65" > <td align="center" style="width:60px;height=65">产品编号</td> <td align="center" style="width:120px">产品名称</td> <td align="center" style="width:60px">期次</td> <td align="center" style="width:40px">单位</td> <td align="center" style="width:60px">外币种类</td> <td align="center" style="width:60px">外币单价</td> <td align="center" style="width:60px">单价(RMB)</td> <td align="center" style="width:40px">数量</td> <td align="center" style="width:60px">品种</td> <td align="center" style="width:80px">备注</td> <td align="center" style="width:80px">操作</td> </tr> </table> <div align="center"> </div> <br /> <br /> <div align="center"> <input type="button" value="添加行" onclick="gotoAdd()" /> <input type="button" value="提交" onclick="checkrow()" /> <input type="reset" value="重置" /> </div> </form> </body> </html> [/code]
ext editorGrid 问题
我从网上看到editorGrid的一个实例,就下了下来,想学习一下,结果出现以下问题 添加用户时,id先是和最后一个id一样后来又成了始终为1了 显示数据时,总有和数据条数相同书目的空白条 [img]http://dl.iteye.com/upload/attachment/175952/13b30933-c726-36ee-b3c4-57016d5dde4b.jpg[/img] [code="java"]/** * 在线通讯录制作: 刘长炯 beansoft@126.com http://beansoft.blogjava.net/ 2008年5月 */ // 定义一个用户对象,这样便于我们动态的添加记录,虽然也可以设置成匿名内置对象 var User = Ext.data.Record.create([ // 下面的 "username" 匹配读到的标签名称 { name : 'id', type : 'int' }, { name : 'user' }, { name : 'password' } ]); /** * 创建文本列模型. * * @param {ID} * _id * @param {列名显示文本} * _header * @param {数据ID} * _dataIndex * @param {宽度} * _width 可选 * @param {是否为空} * notBlank 可选 * @param {渲染器} * _renderer 可选 * @param {自定义修改器} * _editor 可选 */ function createTextColumn(_id, _header, _dataIndex, _width, notBlank, _renderer, _editor) { var object = { id : _id, header : _header, dataIndex : _dataIndex, width : _width }; if (_editor) { object.editor = _editor; } else if (notBlank == true) { object.editor = new Ext.form.TextField({ allowBlank : false // 不能为空 }); } else { object.editor = new Ext.form.TextField(); } if (_renderer) { object.renderer = _renderer; } return object; } /** * 快速创建文本列 * * @param {数据ID} * _dataIndex * @param {列名显示文本} * _header * @param {宽度} * _width 可选 * @return {列对象} */ function qCreateColumn(_dataIndex, _header, _width) { return createTextColumn(_dataIndex, _header, _dataIndex, _width); } Ext.onReady(function() { Ext.QuickTips.init(); // 格式化日期显示 function formatDate(value) { return value ? value.dateFormat('Y, M d') : ''; } // 格式化性别显示,这是个 renderer, 渲染器 function formatSex(value) { return value ? "男" : "女"; } // 弄个缩写的别名 var fm = Ext.form; // 列模型定义了表格所有列的信息, // dataIndex 将特定的列映射到数据源(Data Store)中的数据列(在后面创建) var cm = new Ext.grid.ColumnModel([ { id : 'id', header : "编号", dataIndex : 'id', width : 50 }, /* * { id : 'username', header : "姓名", dataIndex : 'username', width : * 250, editor : new fm.TextField({ allowBlank : false // 不能为空 }) } */ createTextColumn('username', '姓名', 'user', 50, true), createTextColumn('password', '密码', 'password', 50, true) ]); // 默认情况下列是可排序的 cm.defaultSortable = true; // 创建 Data Store var store = new Ext.data.Store({ // 使用 HTTP 加载 url : 'nb_xml.jsp', // 因为返回值是 XML, 所以我们创建一个解析器 reader : new Ext.data.XmlReader({ // 记录必须包含 "user" 标签 record : 'user' }, User), sortInfo : { field : 'username', direction : 'ASC' }// 排序信息 }); // 创建编辑器表格 var grid = new Ext.grid.EditorGridPanel({ store : store, cm : cm, renderTo : 'editor-grid', width : 500, height : 300, autoExpandColumn : 'username', title : '通讯录',// 标题 frame : true, clicksToEdit : 2,// 设置点击几次才可编辑 selModel : new Ext.grid.RowSelectionModel({ singleSelect : false }),// 设置单行选中模式, 否则将无法删除数据 // 顶部工具栏按钮 tbar : [ { text : '添加用户', iconCls : 'add',// 按钮图标的CSS名称 handler : function() {// 点击按钮执行的操作 var n = grid.getStore().getCount();// 获得总行数 // 显示等待对话框 Ext.Msg.wait("请等候", "添加用户", "操作进行中..."); // 调用 DWR 进行添加操作, 操作完成后调用方法来更新界面 JUserManagerNB.addUser('user' + n , function(data) { if (data) { Ext.Msg.hide();// 隐藏对话框 var p = new User({ id : data, username : 'user'+n , password:'user' }); grid.stopEditing();// 停止编辑 store.insert(n, p);// 插入到最后一行 grid.startEditing(n, 1);// 开始编辑1单元格 } }); } }, { text : '导出为Excel格式', iconCls : 'details', handler : function() { document.location = "nb_excel.jsp"; } }, { text : '删除所选', iconCls : 'remove', handler : function() { var record = grid.getSelectionModel().getSelected();// 返回值为 // Record 类型 if (!record) { Ext.Msg.alert("提示", "请先选择要删除的行!"); return; } // 弹出对话框警告 if (record) { Ext.MessageBox.confirm('确认删除', '你真的要删除所选用户吗?', function(btn) { if (btn == 'yes') {// 选中了是按钮 // 调用 DWR, 执行结果成功时方删除所有数据 // 显示等待对话框 Ext.Msg.wait("请等候", "删除用户", "操作进行中..."); JUserManagerNB.removeUser(record.get("id"), function(data) { if (data) { // 更新界面, 来真正删除数据 store.remove(record); Ext.Msg.hide();// 隐藏对话框 } else { Ext.Msg.alert("出错了!", "单个用户数据删除失败!"); } }); } }); } } } ] }); // 单元格编辑后事件处理 grid.on("afteredit", afterEdit, grid); // 事件处理函数 function afterEdit(e) { var record = e.record;// 被编辑的记录 // 显示等待对话框 Ext.Msg.wait("请等候", "修改中", "操作进行中..."); // 调用 DWR, 执行结果成功时方删除所有数据 JUserManagerNB.editUser(record.get("id"), e.field, e.value, function(data) { if (data) { // 更新界面, 来真正删除数据 // Ext.Msg.alert('您成功修改了用户信息', "被修改的用户是:" // + e.record.get("username") + "\n 修改的字段是:" // + e.field);// 取得用户名 Ext.Msg.hide();// 隐藏对话框 // // 更改最后更新的时间,同步到后台 // JUserManagerNB.editUser(record.get("id"), 'modified', // (new Date()).clearTime()); // 更新界面 record.set('modified', (new Date()).clearTime()); } else { Ext.Msg.alert("出错了!", "修改数据失败,将重置为修改前的值!", function() { record.set(e.field, e.originalValue); }); } }); }; // 触发数据加载 store.load(); }); [/code]
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
深深的码丨Java HashMap 透析
HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary,HashMap、TreeMap继承自AbstractMap,三者均实现Map接口 **HashTab:**同步哈希表,不支持null键或值,因为同步导致性能影响,很少被使用 **HashMap:**应用较多的非同步哈希表,支持null键或值,是键值对...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 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)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了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...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片...
走进高并发(二)Java并行程序基础
一、进程和线程 在操作系统这门课程中,对进程的定义是这样的: 进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进行是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。 上面的定义很完整,对进程进行了全方面的定义,但是貌似进程是看不见摸不着的一个东西,实际上,我们可以通过查看计算...
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课...
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问