treeのjsonの生成方法
詳細
この間、仕事で木を使う必要がありました.この点は、フロントでextでよく実現しましたが、このtreeのstoreのこのjsonはバックグラウンドでスペルを書くのに少し頭がかかりました.以下にまとめてみると、使いやすい方法を見つけました.
△ああ、親たち、これらのコードでは、データは異なるデータソースから得られるので、コードにはデータソースを切り替えるコードが体現されています.データソースを切り替える必要がなければ、これをする必要はありません.sqlの構成とリストに戻るだけでいいです.
sql:
json
この間、仕事で木を使う必要がありました.この点は、フロントでextでよく実現しましたが、このtreeのstoreのこのjsonはバックグラウンドでスペルを書くのに少し頭がかかりました.以下にまとめてみると、使いやすい方法を見つけました.
△ああ、親たち、これらのコードでは、データは異なるデータソースから得られるので、コードにはデータソースを切り替えるコードが体現されています.データソースを切り替える必要がなければ、これをする必要はありません.sqlの構成とリストに戻るだけでいいです.
sql:
public List FindComboTreeDataBySubjectId(String subjectId, List paramList,List constantValue) {
//
String pmsSql = reportPermissionService.getPmsSql(constantValue);
Subject pmsSubject = reportPermissionService.getPmsSubject();
Subject subject = this.subjectDomainService.getSubject(subjectId);
if(subject==null||"".equals(subject)){
return new ArrayList();
}
String subTable = subject.getSubTable();
String ds = subject.getDataSource().toString();
//
HotSwappableTargetSource swapper = (HotSwappableTargetSource)app.getBean("swappableDataSource");
DataSource dataSource = (DataSource)app.getBean(ds);
swapper.swap(dataSource);
//
List result = new ArrayList();
String sql = "SELECT ID AS COMPANYID, ID,PID,NAME,NODETYPE,YEARMONTH FROM "+subTable+" WHERE 1=1 ";
if(pmsSubject !=null && pmsSubject.getDataSource().toString().equals(ds) && pmsSql !=""){
sql = "SELECT T.ID AS COMPANYID,T.ID,T.PID,T.NAME,T.NODETYPE,T.YEARMONTH, DECODE(PMS.ID,NULL,0,1) AS PERMIS FROM "+subTable + " T LEFT JOIN" + pmsSql + " ON T.ID = PMS.ID WHERE 1=1 ";
}
if(paramList != null){
Iterator paramItem = paramList.iterator();
while(paramItem.hasNext()){
String param = paramItem.next().toString();
if(!"".equals(param)||param!="")
sql +=" and "+param+" ";
}
}
sql = "SELECT T.*,LEVEL FROM ("+ sql + ")T start with t.pid is null connect by prior t.id = t.PID order by level,T.NAME desc";
SQLQuery query = getSession().createSQLQuery(sql);
List list = query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
return list;
}
json
public String FindTreeDataBySubjectId(String subjectId,List paramList,List constantValue){
List list=componentDataDomainService.FindComboTreeDataBySubjectId(subjectId, paramList,constantValue);
String treeString=getChildren(list,"");
if("".equals(treeString)||treeString==""){
treeString="";
}else{
treeString=treeString.replace("children:[,", "children:[");
treeString=treeString.substring(1, treeString.length());//
}
treeString="{companyId:'0',id:'0',text:' ',expanded:'true',children:["+treeString+"]}";
return treeString;
}
/**
* ,
* @param list
* @param pId
* @return :D :D :D :D
* @DATE:2012-8-31 @TIME: 14:20:58
*/
@SuppressWarnings("rawtypes")
private String getChildren(List list,String pId){
StringBuffer treeStore = new StringBuffer();
for(int i=0;i