最近由于项目需要,一直在使用open flash char(以下简称ofc)。感觉这玩意儿展现出的效果确实不错。不过在功能上略显不足。真正对于复杂的报表展示,使用起来还是比较繁琐。(个人认为,如果有更好的使用方式请告知我:[email protected])。
以下是我在使用过程中遇到的问题,以及解决方式。
1.问题一:多个参数传递。对于ofc,默认只支持一个参数传递,即
data-file":"$homeModule/alipay/monitorAlipayTotalAmountMonthArea.do?catalog=1&id=3,只认?号后面的内容为参数,对于&符号不进行参数分割,所获取的参数值为:1&id=3。
解决方式:如果是多个参数,对?号后面的参数使用;号进行分割,在后台取参的时候用了如下方法:
/**
* @param flashParamStr
* 值:asdf;dataForm=sss;dataTo=sccc中间以;分割
* @param paramName
* 第一个参数名
* @return Map 中key为参数名dataForm ,value为参数值sss 对open flash char
* 的参数做处理flashParamStr值:asdf;dataForm=sss;dataTo=sccc中间以;分割
*/
public static Map<String, String> flashParamProcess(String paramName,
String flashParamStr) {
String[] flashParamArray = flashParamStr
.split(ReportConstant.FLASH_PARAM_SPLIT_CHAR);
Map<String, String> flashParamMap = new HashMap<String, String>();
for (int i = 0; i < flashParamArray.length; i++) {
if (i == 0) {
flashParamMap.put(paramName, flashParamArray[i]);
} else {
flashParamMap.put(flashParamArray[i].substring(0,
flashParamArray[i].indexOf("=")), flashParamArray[i]
.substring(flashParamArray[i].indexOf("=") + 1,
flashParamArray[i].length()));
}
}
return flashParamMap;
}
取参数的时候:如下(假如url: monitorAlipayTotalAmountMonthArea.do?appId=1;serverId=3)
String appIdStr=rundata.getParameters().getString("appId");
Map<String, String> paramMap=ReportUtil.flashParamProcess("appId", appIdStr);//对open falsh char参数做处理
// String appId=paramMap.get("appId");
String serverId=paramMap.get("serverId");