首先定义一个properties文件放到classpath路径下
systemConfig.poperties
##comboBox
user.status=[0:禁用],[1:启用]
user.sex==[0:男],[1:女]
读取properties文件的Java代码:
ReadProperties.java
package com.hwasun.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
*
* @author JLee
* @Since 2011-3-10
* @function
* 读取系统的properties文件
* 完成本地combo的数据获取
*/
public class ReadProperties {
public Map<String,String> readFile(String fileName) {// 传入参数fileName是要读取的资源文件的文件名如(file.properties)
InputStream in = null;
Properties pros = new Properties();
File file = new File(fileName);
Map<String,String> map = new HashMap<String,String>() ;
try {
if (null != fileName) {
// 下面这种方式前提是资源文件必须类在同一个包下
// in = ReadProperties.class.getResourceAsStream(fileName);
in = new FileInputStream(file);
// 得到当前类的路径,并把资源文件名作为输入流
pros.load(in);
Enumeration en = pros.propertyNames();// 得到资源文件中的所有key值
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
map.put(key, pros.getProperty(key)) ;
// 输出资源文件中的key与value值
// System.out.println("key=" + key + " value=" + pros.getProperty(key));
}
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("读取资源文件出错");
} finally {
try {
if (null != in) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭流失败");
}
}
return map ;
}
public static void main(String[] args) {
//下面这种方式前提是资源文件必须类在同一个包下
// new ReadProperties().readFile("systemConfig.properties") ;
//下面这种方式前提是资源文件放在classpath下面
new ReadProperties().readFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"systemConfig.properties") ;
}
}
定义JSP页面
<script type="text/javascript" src="<%=path%>/util/map.js"></script>
<script type="text/javascript">
var systemConfig = new Map();
<%
ReadProperties readProperties = new ReadProperties() ;
java.util.Map<String,String> map = readProperties.readFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"systemConfig.properties") ;
java.util.Iterator it = map.entrySet().iterator();
while (it.hasNext()){
java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
%>
systemConfig.put("<%=entry.getKey()%>","<%=entry.getValue()%>") ;
<%
}
%>
//var val = systemConfig.get("user.status") ;
</script>
文件中引入了map.js文件,作用是用于存储properties文件的键值对
map.js
/*
* 将JS中的Array扩展为Map为了常量的字典设置
*
* 接口: size() 获取MAP元素个数 isEmpty() 判断MAP是否为空 clear() 删除MAP所有元素 put(key, value)
* 向MAP中增加元素(key, value) remove(key) 删除指定KEY的元素,成功返回True,失败返回False get(key)
* 获取指定KEY的元素值VALUE,失败返回NULL element(index)
* 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL containsKey(key)
* 判断MAP中是否含有指定KEY的元素 containsValue(value) 判断MAP中是否含有指定VALUE的元素 values()
* 获取MAP中所有VALUE的数组(ARRAY) keys() 获取MAP中所有KEY的数组(ARRAY)
*
* 例子: var map = new Map();
*
* map.put("key", "value"); var val = map.get("key") ……
*
*/
function Map() {
this.elements = new Array();
// 获取MAP元素个数
this.size = function() {
return this.elements.length;
}
// 判断MAP是否为空
this.isEmpty = function() {
return (this.elements.length < 1);
}
// 删除MAP所有元素
this.clear = function() {
this.elements = new Array();
}
// 向MAP中增加元素(key, value)
this.put = function(_key, _value) {
this.elements.push({
key : _key,
value : _value
});
}
//增加元素并覆盖
this.putOverride = function(_key,_value){
this.remove(_key);
this.put(_key,_value);
}
// 删除指定KEY的元素,成功返回True,失败返回False
this.remove = function(_key) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
this.elements.splice(i, 1);
return true;
}
}
} catch (e) {
bln = false;
}
return bln;
}
// 获取指定KEY的元素值VALUE,失败返回NULL
this.get = function(_key) {
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
return this.elements[i].value;
}
}
} catch (e) {
return null;
}
}
// 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
this.element = function(_index) {
if (_index < 0 || _index >= this.elements.length) {
return null;
}
return this.elements[_index];
}
// 判断MAP中是否含有指定KEY的元素
this.containsKey = function(_key) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
bln = true;
}
}
} catch (e) {
bln = false;
}
return bln;
}
// 判断MAP中是否含有指定VALUE的元素
this.containsValue = function(_value) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value) {
bln = true;
}
}
} catch (e) {
bln = false;
}
return bln;
}
// 获取MAP中所有VALUE的数组(ARRAY)
this.values = function() {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].value);
}
return arr;
}
// 获取MAP中所有KEY的数组(ARRAY)
this.keys = function() {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].key);
}
return arr;
}
}
/**
数字数组,可将字串中的数字提出并加入数组,返回最大最小值,排序
*/
function NumberArray(){
this.elements = new Array();
this.addandReturnMax = function(num){
this.add(num);
this.sort();
return this.max();
}
this.add = function(num){
num = num.replace(/\D/g,'');
this.elements.push(num);
}
this.sort = function(){
this.elements = this.bubbleSort();
return this.elements;
}
this.max = function(){
return this.elements.slice(0,1);
}
this.min = function(){
return this.elements.slice(-1,0);
}
this.bubbleSort = function() {
var arr = this.elements;
// 外层循环,共要进行arr.length次求最大值操作
for (var i = 0; i < arr.length; i++) {
// 内层循环,找到第i大的元素,并将其和第i个元素交换
for (var j = i; j < arr.length; j++) {
if (parseInt(arr[i]) < parseInt(arr[j])) {
// 交换两个元素的位置
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
this.clear = function(){
this.elements = new Array();
}
}
定义自己的本地combo
var combo = new Ext.form.ComboBox({
typeAhead: true,
triggerAction: 'all',
lazyRender:true,
mode: 'local',
store: new Ext.data.ArrayStore({
id: 0,
fields: [
'myId',
'displayText'
],
data: Ext.decode("["+systemConfig.get("user.status")+"]")
}),
valueField: 'myId',
displayField: 'displayText'
});