1.表格翻页方法的重写
me.gridView.getDataGrid().onpageindexchanged.clear(); me.gridView.getDataGrid().onpageindexchanged.addEventListener(me.controller.pageIndexChanged);
2.获取登陆人信息
@RequestMapping(value = "/getuserinfo")
public @RawResponseBody Object getuserinfo( ){
Map<String, String> data = new HashMap<String, String> ();
//得到用户id,登录名
String userId = ClientContextHolder.getInstance().getClientContext().getUserID();
String name = ClientContextHolder.getInstance().getClientContext().getUserName();
try {
List<User> users = AdapterFactory.getIdentityService().getUserByIds(new String[]{userId});
User user = ((User) users.get(0));
String userName = user.getName();
String userMobile = user.getMobile();
String userEmail= user.getEmail();
Department dept = AdapterFactory.getIdentityService().getDepartmentById(user.getBaseOrgId());
可以去的部门的unicode 去o_org表中 判断org_type 02省 03地市
在前台判断页面的展现即可
String departementName = dept.getName();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return WrappedResult.successWrapedResult(data );
}
3.uap压缩模式启动
#前端展现框架是否使用调试模式,默认为 true,生产环境下建议设置为 false
MX_DEBUGMODE=true
#前端展现框架是否使用压缩模式加载到浏览器端,默认不启用,建议生产模式启用
MX_COMPRESSMODE=false
前者设置为false,后者设置为true即可 。
4.jquary方法的使用
jquary
find 搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。$("p").find("span").onfocus = function(){}
可以转化为document对象.
5.控制台打印信息
console.log()
6.uap错误日志
window show View others 里面的 error log就有
D:\Users\Administrator\workspace\.metadata 中的.log日志
7.uap添加log日志文件
1.uap项目下修改log4j.properties配置文件,添加sql所在文件包路径节点及输出方式(文件)。
### set sql log
log4j.additivity.com.sgcc.mds.lcam=false
log4j.logger.com.sgcc.mds.lcam=debug, lcam
log4j.appender.lcam=org.apache.log4j.RollingFileAppender
log4j.appender.lcam.File=${LOG_DIR}/lcam.log
log4j.appender.lcam.MaxBackupIndex=100
log4j.appender.lcam.MaxFileSize=5000000
log4j.appender.lcam.layout=org.apache.log4j.PatternLayout
log4j.appender.lcam.layout.ConversionPattern=[%d{ISO8601}][%p] %c{1}:%L) %n %m%n
参考附件:
2. 模块项目添加如下log4j依赖:
3. Java类里添加如下标红两行:
4. Sql生成位置添加日志输出代码:
参考附件:
8.uap白名单配置-越过登陆直接访问
Applicationconfig.proerties
ISC_EXCLUDEPAGES=/sguap-client/workbench/workbench/login.jsp,\
/mds/portal/portal/login.jsp,\
/ImsBusiness/services,\--wsdl
/mds/smfxjpj/isc_tree/index.jsp,\--页面
/mds/portal/fromMds/index.jsp
9.uap接入统一认证
ISC_ADAPTER_URL = http://192.168.0.32:7002/isc_frontmv_serv
ISC_LOGINURL = http://192.168.0.32:7002/isc_sso/login
ISC_AUTHMODE = ISC
10.uap中wsdl实现
1.配置org.codehaus.xfire白名单 modulelist的
2.applicationconfig中wsdl路径白名单
3config下配置xfire
4config下配置service
http://IP地址:端口号/lcamIMS /ImsBusiness/services/MDSWebService?wsdl
5测试新建webservice项目 导入xfire包
String urlString = "http://localhost:9000/mds/ImsBusiness/services/MDSWebService?wsdl";
Client client;
try {
client = new Client(new URL(urlString));
Object[] results= client.invoke("getKPIValue", new Object[]{xml});
// System.out.println(results[0].toString());
for( Object o : results){
System.out.println(o);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
11.uap中生成42位uuid
12.uap过滤器--用于审计和sql注入校验
1.config下filter注册
2过滤配置
3过滤实现
13.uap配置文件配置常量
public static final String ISC_APPID = PlatformConfigUtil
.getString("ISC_APPID");
14.uap与chart图集成
首先导入include(/mds/gg/fusionCharts/FusionCharts.js);
1.初始化容器
me.chaichuChart = new mx.containers.Container({
height:"250px",
width:"650px",
// border:"1px solid #6EC5B9",
left: "300px",
top:"0px",
id :"chaichuChart"
});
2.初始化数据
var params = new Object();
params.items = new Array();
params.items.push({
"stratDate" : me.timeEditor3.value,
"endDate" : me.timeEditor4.value,
"orgNo" : me.controller.drop1_value,
"startAge" : me.drop5.value,
"endAge" : me.drop6.value,
"statusCode" : me.controller.drop2_value
});
// debugger
var client = new mx.rpc.RESTClient({
async : false
});
client.post(chdnbfjqk.mappath("~/rest/removeHomePage/EquipPickPie3D"), JSON
.stringify(params), function(result) {
me.JsonData = result;
});
3 /**
* 放置chart
*/
me.setChartA = function() {
me.chart1 = new FusionCharts("/mds/gg/fusionCharts/Pie3D.swf",
"chartA", "570", "230");
me.chart1.setJSONData(me.JsonData);
me.chart1.render("chaichuChart");
}
15.uap容易添加html代码
获取容器jquary对象的append方法
me.hsplit2.$panel1.append(
"<table style='width: 100%;'><tr><td align='center'>" +
"<div style='position: relative; float: left;width: 100%;padding-left: 33px; top:10px;'>" +
"<div style='position: relative; float: left; margin-left: 70px;'>单位:只</div>" +
"</div>" +
"<div id='chartContainer1' style='width: 100%; height: 100%;'></div>" +
"</td></tr></table>"
);
16表格onload方法 设置表格数据样式
onload:me.controller._dataGrid_onload
me._dataGrid_onload = function(e){
var v_dataGrid = e.target;
v_dataGrid.$e.find("table>tbody>tr>td").css({"border":"#6ec5b9 1px solid"});
v_dataGrid.$e.find("div#body").css({"overflow-y":"auto","top":"23px"});
v_dataGrid.$bodyTable.find("#rownumber").css("backgroundColor","#E7F8F2");
if(v_dataGrid.displayStatisticRow){
var statist = v_dataGrid.$statisticRow;
//改变统计行的样式
statist.css({
position:"absolute",
bottom:v_dataGrid.pageNaviBar.height,
border:"1px solid #1B9974"
});
statist.find("tr").css({"backgroundColor":"#E7F8F2"});
statist.find("#rownumber").text("合计");
//移除统计行
statist.remove();
//将统计行重新加载到grid下面
statist.insertAfter("#grid");
//重置grid的bottom样式
v_dataGrid.$grid.css("bottom",statist.height()+v_dataGrid.pageNaviBar.height);
//统计
var items = v_dataGrid.items;
//申请报废数
var runQty = 0;
for(var i=0;i<items.length;i++){
runQty += items[i].getValue("appRetQty");
}
//设置统计值
v_dataGrid.columns["appRetQty"].setStatisticValue(runQty);
v_dataGrid.columns["appRetQty"].setStatisticAlign("center");
//已报废数
var ybfs = 0;
for(var i=0;i<items.length;i++){
ybfs += items[i].getValue("finishRetQty");
}
//设置统计值
v_dataGrid.columns["finishRetQty"].setStatisticValue(ybfs);
v_dataGrid.columns["finishRetQty"].setStatisticAlign("center");
}
17.uap导出功能
导出方法1
/**
* 导出Excel
*
//导出时间
var date = new Date();
//年份
var year = date.getFullYear();
//月份
var month = date.getMonth()+1;
//第几日
var day = date.getDate();
var time = year+"-"+month+"-"+day;
//过滤条件
var v_dataGrid = me.view.getDataGrid();
//列名
var columns = "";
//列标题
var columnCaptions = "";
//列宽度
var columnWidths = "";
//文件名称
var fileName = "报废数量单位分布";
//文件标题
var fileTitle = "报废数量单位分布";
//获取列名,列标题,列宽度
for(var i=0;i<v_dataGrid.columns.length-1;i++){
if(v_dataGrid.columns[i].name == v_dataGrid.primaryKey){
continue;
}
columns += v_dataGrid.columns[i].name + ",";
columnCaptions += v_dataGrid.columns[i].caption + ",";
columnWidths += "100,";
}
columns = columns.substring(0,columns.length-1);
columnCaptions = columnCaptions.substring(0,columnCaptions.length-1);
columnWidths = columnWidths.substring(0,columnWidths.length-1);
//查询条件
var filter = new Object();
filter.orgNo = me.orgNo;
filter.mdType = me.mdType;
filter.bidBatchNo = me.bidBatchNo;
filter.arriveNo = me.arriveNo;
filter.supplierNo = me.supplierNo;
filter.tjksrq = me.tjksrq;
filter.tjjzrq = me.tjjzrq;
//选中的列名
filter.columns = me.columns;
//导出标记,使用它便于区分导出还是查询
filter.exportFlag = true;
//导出 com.sgcc.mds.lcam.lcEquipRetired.LcEquipRetiredController.exportExcel
var jsonObject = {
id : "equipInstGuidOut",//不重复的ID
className:"equipInstController",//相应的.java文件
queryMethod:"exportExcel",//查询方法 autoFilter:true,
queryMethodParamType:1,
columns:columns,
columnCaptions:columnCaptions,
columnWidths:columnWidths,
fileName:fileName,
fileTitle:fileTitle,
fileTime:time,
isMerge:"false",
statisticCols:"appRetQty,finishRetQty",
filter:filter
};
//导出控件
me.exportXSLUtil = new common$util.excel.ExportXSLUtils({
jsonObject:JSON.stringify(jsonObject)
});
me.exportXSLUtil.exportExcel();
}
Config下
后台controller
/**
* 导出表格
* @param params 查询条件
* @param p_request
* @return QueryResultObject 列表数据
*/
@RequestMapping("/exportExcel")
public @ItemResponseBody
QueryResultObject exportExcel(@QueryRequestParam("params") RequestCondition params,HttpServletRequest p_request){
return query(params);
}
导出方法2
me.btn_daochu_click = function(){
var itemCount = me.view._dataGrid.itemCount;
if(itemCount==0){
mx.indicate("info","无查询结果,查询后再进行操作!");
return;
}/*else if(itemCount>2000){
mx.indicate("info","数据量过大,请缩小查询范围!");
return;
}*/else{
var pathName = window.document.location.pathname;
var projectName = pathName.substring(0,pathName.substr(1).indexOf('/')+1);
var baseUrl = projectName+"/zczt/test/Zc_Servlet?" +
"wd="+wd+"&rmv_reason="+me.view.drop1.value+"&type_code="+me.view.drop2.value+"&OrgNo="+me.view.drop3.value
+"&asset_sort="+me.view.drop4.value+"&bid_batch_name="+me.view.drop5.value+"&arrive_no="+me.view.drop6.value+"&biaozhiwei="+"chqk"+
"&supplier_no="+me.view.drop7.value+"&stat_ymQS="+me.view.timeEditor8.value+"&stat_ymJZ="+me.view.timeEditor9.value;
// window.location.href = baseUrl;
var httpurl=sheiBeizk.mappath(baseUrl);
window.open(httpurl,
"显示窗口","height=1px, width=1px, top=10000px, left=100px, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no");
}
};
18 uap下载功能
Uap项目下webcontent下建文件夹放下载内容 servlet实现
19.tab中text自适应属性
“max-width” : “100%”
一.uap初级使用
1.布局控件
创建一个布局控件主要包括以下步骤:
导入所需的js类。
创建实例。
将实例添加到容器中。
1.1上下分割窗口布局
//1.导入类代码
$import("mx.containers.HSplit");
//2. 创建实例
me.hsplit = new mx.containers.HSplit({
rows: “300, auto“ ,//窗口的两部分大小
borderThick:”0px”//设置边框粗细
});
//3.将实例添加到容器中
me.addControl(me.hsplit);
1.2左右分割窗口布局
//1.导入类代码
$import("mx.containers.VSplit");
//2. 创建实例
me.vsplit = new mx.containers.VSplit({
cols: “300, auto“ //窗口的两部分大小
});
//3.将实例添加到容器中
me.addControl(me.vsplit);
**vsplit整体左边距设置,和左边框线的设置
me.vSplit2 = new mx.containers.VSplit({
cols:"12%,88%",
width:"50%",
top:"0%",
position:"absolute",
borderThick:2
});
vsplit整体左边距设置,和左边框线的设置
me.vSplit2.setLeft("50%");
me.vSplit2.$panel1[0].style.borderLeftWidth = "1px";
1.3手风琴式菜单
//1.导入类代码
$import("mx.containers.Accordion");
//2. 创建菜单实例
me.accordion = new mx.containers.Accordion(
{
"height":"60%",
"width":"20%",
panels:[
{ title: "综合评价", name: "zhpj" },
{ title: "参建队伍", name: "cjdw" }
],
onselectionchanged:me.controller.accordionChanged
}
);
//3.将实例添加到容器中
me.addControl(me.accordion);
me.addControl.appendPanel({name:"panel3", title:"面板3"});
var text = new mx.editors.TextEditor({ value: "bruce" });
me.addControl.panels[0].addControl(text);
1.4Tab页
(1)创建tablePage加入tabCotrol
自己生成新的页面加入显示
$import("mx.containers.TabControl");//记得导包
me.tab = new mx.containers.TabControl({
pages:[
{ text: "常规", name: "general" },
{ text: "角色", name: "role" }
],
onselectionchanging: me.controller._selection_changing,
onselectionchanged: me.controller._selection_changed
});
if(me.pageTwo == null){ //如果第二个page不存在
//创建第二个tablePage加入tableCotrol me.pageTwo=me.view.tabControl.appendPage(text,text);//,true;
initTableTwo();
me.pageTwo.init();//非第一个页面记得要先初始化一下
me.pageTwo.addControl(me.hSplit);
//显示第二个
me.view.tabControl.selectPage(1);
1.5.lable
Label5.$e[0].style.cursor="pointer";
定义点击事件:
Label5.$e.on("mouseenter",me._onmousemove);
@.或onclick: me.controller.detailOnclick
autoWrap :true, //表示标签文本是否自动换行
1.6panel
//去除panel2右侧的视图
me.view.vsplit2.removeControl(me.view.vsplit2.controls[4]);
me.view.vsplit2.addControl( me.getSingleIdx(),1);
2. 创建一个表格
创建一个表格主要也包括以下步骤:
导入创建表格所需的js类。
定义与表格交互数据的服务器url。
创建表格数据容器。
创建表格实例
调用表格load方法。
将表格添加到容器中。
//1.导入类代码
$import("mx.datacontainers.GridEntityContainer");
$import("mx.datacontrols.DataGrid");
//2.定义服务端url
var restUrl = "~/mxdemo/rest/uapsb/";
/* 初始化表单数据容器EntityContainer */
me.gridEntityContainer=new mx.datacontainers.GridEntityContainer({
baseUrl : restUrl,
iscID : "-1", // iscID 是数据元素的统一权限功能编码。默认值为 "-1" ,表示不应用权限设置
loadMeta :false //不会更新数据库验证字段
primaryKey: "objId"
});
//3. 创建表格实例
//4. 创建表格实例
me.dataGrid = new mx.datacontrols.DataGrid({
columns:[
{name: "objId", caption: "主键" , editorType: "TextEditor"},
{name: "mc", caption: "设备名称 " , editorType: "TextEditor"},
{name: "sbxh", caption: " 设备型号" , editorType: "TextEditor"},
{name: "bdz", caption: "变电站 " , editorType: "TextEditor"},
{name: "jgdy", caption: "间隔单元" , editorType: "TextEditor"},
{name: "azrq", caption: "安装日期" , editorType: "TextEditor"},
{name: "sblx", caption: "设备类型" , editorType: "DropDownEditor"},
{name: "sfzy", caption: "是否在用" , editorType: "DropDownEditor"},
{name: "ssbm", caption: "所属部门" , editorType: "DropDownEditor"},
{name: "sfwx", caption: " 是否已维修" , editorType: "DropDownEditor"},
{name: "sysm", caption: "使用说明" , editorType: "TextEditor"}
],
displayCheckBox: true,
displayPrimaryKey:false,//列表是否显示主键
allowEditing: true, //列表默认不可编辑
entityContainer: me.gridEntityContainer({
type : "local",
primaryKey : "objId",
onload : me.controller._datagridEntityContainer_onload // 列表容器加载数据
}),
onpageindexchanged : me.controller._datagrid_onpageindexchanged//分页
onitemclick :me.controller._dataGrid_onClick //定义 表格点击事件
});
//5.调用表格load方法
me.dataGrid.load();
//6.将表格添加到页面上
me.addControl(me.dataGrid);
controller:
// 列表容器加载数据(不常用)
me._datagridEntityContainer_onload = function(e) {
if(me.view.danwei.value!=me.orgcode){
e.target.dicts = me.organdict1;//数据字典
e.itemCount = me.itemCountCx;
e.items = me.dataCx;
}else{
e.target.dicts = me.organdict;//数据字典
e.itemCount = me.itemCountCx;
e.items = me.dataCx;
}
}
// 分页
me._datagrid_onpageindexchanged = function(e) {
Query(me.filtercx, e.target.pageIndex, e.target.pageSize,true);
}
2.1ToorBar
mx.controls.ToolBar
var toolBar = new mx.controls.ToolBar(
{
items :
[
{
name : "menuGroup",//菜单项的唯一标识
toolTip : "菜单分组",
imageKey : "new",
text : "菜单分组",
items :
[
{
name : "childMenu1",
toolTip : "子菜单1",
imageKey : "new",
text : "子菜单1"
},
{
name : "childMenu2",
toolTip : "子菜单2",
imageKey : "new",
text : "子菜单2"
}]
},
"-",//横线表示显示分隔线
{
name : "menu1",
toolTip : "主菜单1",
imageKey : "new",
text : "主菜单1"
},
{
name : "menu2",
toolTip : "主菜单2",
imageKey : "new",
text : "主菜单2"
}]
});
例:
var toolBar = new mx.controls.ToolBar(
{
items :
[{ name : "menuGroup",//菜单项的唯一标识
toolTip : "保存",
imageKey : "save",
text : "保存"
}]
});
//将toolBar置为空白 setDisplay or setVisible
me.proView.getDataGrid().toolBar.setDisplay("none");
//将toolBar高度设为空
me. proView.getDataGrid().toolBar.resizeTo("100%", "0%");
//调整高度
me. proView.getDataGrid().$grid.animate({top : 1},"fast"); (26为:距上边框距离)
增添:
_dataGrid.toolBar.insertItem(2,"-",true); 分割线
_dataGrid.toolBar.insertItem(3, 添加编辑按钮
{ name: "edit", text: mx.msg("EDIT"), toolTip: mx.msg("EDIT"), imageKey : "edit",
onclick: me.controller._btnEdit_onclick},true);
_dataGrid.toolBar.insertItem(4,{ name: "fqlc", text: "发起流程",toolTip:"发起流程",imageKey : "edit",onclick: me.controller._btnFqlc_onclick},true);
删除:
_dataGrid.toolBar.removeByIndex(1);
_dataGrid.toolBar.removeByName("save");
Editor类型:获取或设置编辑器的类型
CheckEditor
TextEditor 文本框
DateTimeEditor DATETIME 日期时间。例如:2007-07-01 14:28:32
DropDownEditor 下拉框
LinkEditor
NumberEditor 数字编辑器
TimeEditor TIME 时间。例如:14:28:32
默认值:TextEditor
2.2隐藏searchBox
//将searchBox置为空白 setDisplay or setVisible
me.projunitDetailView.getDataGrid().searchBox.setDisplay("none");
//将searchBox高度设为空
me.projunitDetailView.getDataGrid().searchBox.resizeTo("100%", "