页面使用JSP页面,前端使用miniUI
miniUI的API地址:jQuery MiniUI V3.0 Api Documentation
miniUI的Demo展示地址:http://www.miniui.com/demo/index.html#src=datagrid/celledit.html
1.隐藏datagrid表单的分页栏
showPager="false"
2.关于input中的值没有传到后台
以task_id为例子,我这里需要隐藏相应控件。
首先JSP页面中的控件需要有class属性,对应miniUI,具体可以去官方文档上查询。
JSP页面-控件
<input class="mini-hidden" name="task_id" id="task_id" type="text" value="10002" />
JSP页面-脚本
<script type="text/javascript">
mini.parse();
var form = new mini.Form("#form1");
var grid = mini.get("srch_grid");
var info = "";
var task_id = mini.get("task_id").getValue();
mini.get("task_id").blur(); //失去焦点
$(function () {
grid.load({
params: mini.encode(form.getData(true)).replace(/\"/g, "'"),
"task_id" : task_id
});
});
</script>
后台的Action
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//前置代码
String task_id = request.getParameter("task_id");//获取到前台的input数值
}
3.JSON格式从前端传到后台出现了 双引号转义错误
报错为:must begin with '{' at character 1 of [{"_state":"modified;,"id":2,"vx":"12"}]
原因:后台获取到的格式有误。
以下为原本用来存储JSON的哈希数列
Map = new HashMap<String, Object>();
String params = request.getParameter("params");
Map = JSONObject.fromObject(params);
实际存储内容为多组数据的列表,应当为:
String params = request.getParameter("params");
JSONArray arr = JSONArray.fromObject(params);
前台的AJAX:
$.ajax({
url:"../open.do?type=save",
type:'post',
data:{
params: mini.encode(rows).replace(/\"/g, "'"),
"id" : id
},
success: function (text) {
grid.reload();
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
4.java.lang.RuntimeException: error in dao:
ORA-01747: user.table.column, table.column 或列说明无效
表中的字段名使用了Oracle数据库的关键字,下面贴个查询关键字的链接,可以全选后通过word查询字段名:
Oracle 关键字大全_后端小王的博客-CSDN博客_oracle关键字
5.隐藏miniUI控件
//mini.getbyName("Foundation_treatment").hide();
window.document.all("cap_unsee").style.display="none";
//document.getElementById("Foundation_treatment").visible = false;
//$("Foundation_treatment").css("display","none");
//隐藏datagrid的列
<div field="tid" align="center" headerAlign="center" visible="false">序号</div>
6.设置input文本框为标签类型,无外框
<style type="text/css">
.asLabel .mini-textbox-border,
.asLabel .mini-textbox-input,
.asLabel .mini-buttonedit-border,
.asLabel .mini-buttonedit-input,
.asLabel .mini-textboxlist-border
{
border:0;background:none;cursor:default;
}
.asLabel .mini-buttonedit-buttons,
.asLabel .mini-buttonedit-button,
.asLabel .mini-textboxlist-close
{
display:none;
}
.asLabel .mini-textboxlist-item
{
padding-right:8px;
}
</style>
JSP页面:
<input name="username" id="username" class="mini-textbox asLabel"/>
7.JSP页面获取到当前时间
var thistime = new Date().toLocaleString();
将当前时间转化为年月日时分秒的代码:
function ChangeDateFormat(timechange) {
if (timechange != null) {
var year = timechange.getFullYear();
var month = timechange.getMonth() + 1;
var date = timechange.getDate();
var hour = timechange.getHours();
var minutes = timechange.getMinutes();
var second = timechange.getSeconds();
if (month < 10) {
month = "0" + month;
}
if (date < 10) {
date = "0" + date;
}
if (hour < 10) {
hour = "0" + hour;
}
if (minutes < 10) {
minutes = "0" + minutes;
}
if (second < 10) {
second = "0" + second;
}
var time = year + "-" + month + "-" + date + " " + hour + ":" + minutes + ":" + second;
return time;
}
return "";
}
var time_change=ChangeDateFormat(new Date());
8.miniUI获取值和设置值
var old_value = mini.getbyName("oldvalue").getValue();//获取值
mini.getbyName("oldvalue").setValue(null);//设置值
9.输出值
System.out.println();//后台输出值
alert();//提示框弹出值
console.log(data);//控制台输出值,用于输出json类型的变量
window.console.log(data);//IE浏览器输出
10.弹出框的url需要包含该页面所在的文件夹
mini.open({
url:"../prp/info_editreason.jsp",
title: "修改原因",
width: 450,
height: 400,
onload: function () {
var iframe = this.getIFrameEl();
var data = {
field:field,
Id:Id,
parm_name:parm_name
};
//调用弹出页面方法进行初始化
console.log(data);
iframe.contentWindow.SetData(data);
},
ondestroy: function (action) {
alert("关闭");
}
});
11.关闭弹出窗口
miniUI打开的窗口用window.close关闭无效, 应该用window.CloseOwnerWindow();
12.JS字符串变量转成JSON的两种方式
推荐第一种:
var sorts = ['婴儿产品','男士产品','护理产品','女士产品','全部产品'];
var num = [20,10,60,30,20];
var array = {};
for(var i = 0; i < sorts.length; i++){
array[sorts[i]] = num[i];
}
console.log(array);
var json = JSON.stringify(array);
console.log(json);
第二种:
var sorts = ['婴儿产品','男士产品','护理产品','女士产品','全部产品'];
var num = [20,10,60,30,20];
var json = [];
var array = {};
for(var i = 0; i < sorts.length; i++){
array['value'] = num[i];
array['data'] = sorts[i];
json.push(array);
array = {};
}
console.log(json);
var json_arrays = JSON.stringify(json);
console.log(json_arrays);
13.Oracle设置主键ID自增,序列名和触发器名称不能过长
//序列
create sequence HISTORY_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
//触发器
create or replace trigger history_tr
before insert on EDIT_HISTORY
for each row
begin
select HISTORY_SEQ.nextval into :new.EDIT_ID from dual;
end history_tr;
14.将另一个表的内容全部插入到另一表中(B表内容插入到A表中)
insert into A(变量名a,变量名b)(select 变量名A,变量名b from B where 判断条件)
15.随机生成字符串
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
String flag="";
for(int i=0;i<6;i++){
int number=random.nextInt(62);
flag += str.charAt(number);
}
16.Ajax基本格式
$.ajax({
url: "../action.do?type=",
dataType:'json',//使获取到的data为json类型
type:'post'
data:{
id: id,
name: name
}
success: function (data) {
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
17.Oracle常见错误
①ORA-01756: quoted string not properly terminated(引号字符串未正确终止)
解决方案:查看是否有变量只有半边引号,或者是中文引号
②ORA-04098: trigger ‘xxx.xxx‘ is invalid and failed re-validation(触发器编译出现问题)
解决方案:打开命令行窗口,输入
Alter trigger 触发器名称 compile
出现鲜红色的错误提示后,再输入
show error
即可查看当前编译错误的原因
③ORA-00942: 表或视图不存在
④ORA-01861: literal does not match format string(字符串格式不匹配)
查看数据库里面相关的字段是否是string类型的
解决方案:常出现错误为变量是Date类型,需要在插入的时候加入日期转换
to_date('"+time+"', 'yyyy-mm-dd hh24:mi:ss')"
⑤ORA-00972: identifier is too long(变量值过长)
字段超过了Oracle本身设定的30个字符
解决方案:减少字符长度
⑥ORA-01722: 无效数字
⑦ORA-00917: missing comma(缺少逗号)
⑧ORA-00904: “ROWNUM_”:invalid identifier(标识符无效)
1.创建表时没有插入字段,查询时字段在表中不存在
2.字段名写错了
3.字符串常量使用了双引号