/**
* 表单数据源由3者元素组合而成:内容替换数据源、单一型数据源、复合型数据源
* 1. 内容替换数据源:用于将单一型数据源内或者复合型数据源的数据绑定给相应的页面标签时,将该数据替换成内容替换数据源相对应的数据。
* 例如:将数据绑定给表格标签(Grid)时,第三列为性别的数值(0:男,1:女)从内容替换数据源找到相应的文本,并将数值替换成文本。
* 2. 单一型数据源:用于绑定给页面单一型标签,如:文本框、lable框等等(必须遵循id规则:类名大写_属性名大写)
* 3. 复合型数据源:用于绑定给页面复合型标签,如:下拉框、表格等等。
*
* 原理:当把页面标签所需的数据都添加至表单数据源后,将其转换成具有一定规则的json字符串,推送至页面前端的js库的数据批量绑定组件接收并解析
* 并将数据一一绑定给相应的标签。
*/
public void instance(){
FormSource source = FormSourceFactory.instance();
try {
DictionaryItemService service = IocFactory.instance( DictionaryItemService.class ) ;
DataTable dictionaryItems = service.table( new DictionaryItem() );
source = FormSourceFactory.instance( dictionaryItems );
List<DictionaryItem> items = service.beans( new DictionaryItem() );
source = FormSourceFactory.instance(items);
} catch (Exception e) {
}
System.out.println(source);
}
/**
* 表单数据源化成json后推送给页面数据集(ModelMap)时的关键字
*/
public static final String KEYNAME = "source";
/**
* 设置内容替换数据源(默认为数据字典)
* @param substitute 内容替换数据源
*/
public void setSubstitute(Object substitute){
DictionaryItemService service = IocFactory.instance( DictionaryItemService.class ) ;
try {
DataTable dictionaryItems = service.table( new DictionaryItem() );
FormSource source = FormSourceFactory.instance( dictionaryItems );
source.setSubstitute( dictionaryItems );
} catch (Exception e) {
}
}
/**
* 添加分页标签数据源至当前表单数据源
* @param tagId 分页标签的ID
* @param dataPage 数据源
*/
public void add(){
DaoPersistence persistence = DaoFactory.instance();
int count = 0 ;
try {
count = persistence.sum( new SF_USERS() );
DataPage dataPage = new DataPage();
dataPage.setCount(count);
dataPage.setIndex(0);
FormSource source = FormSourceFactory.instance();
source.add("pginfo", dataPage);
} catch (Exception e) {
}
/**
* 分页标签的绑定。。。
*/
}
/**
* 添加复合型标签数据源至当前表单数据源
* <br>如果标签ID符合:单一数据源类名_属性名,则自动将该单一数据源实体内的这个属性值作为初始值
* @param tagId 复合型标签的ID
* @param dataSource 数据源
*/
public void add_1(){
SF_USERS bean = new SF_USERS();
bean.setSEX("0");
try{
DaoPersistence persistence = DaoFactory.instance();
int count = persistence.sum(bean);
DataPage page = new DataPage();
page.setCount(count);
page.setIndex(0);
SqlCriteria criteria = new SqlCriteria();
criteria.setPager(page);
criteria.setOrderBy( "CTIME" );
DataTable dataSource = persistence.query(bean, criteria) ;
FormSource source = FormSourceFactory.instance();
String tagId = "grid" ;
source.add( tagId, dataSource);
}catch( Exception e ){
}finally{
}
/**
* 复合型标签(数据表格)的绑定。。。
*/
}
/**
* 添加复合型标签数据源至当前表单数据源
* @param tagId 复合型标签的ID
* @param dataSource 数据源
* @param init 初始值
*/
public void add_2(){
SF_DEPARTMENT bean = new SF_DEPARTMENT();
bean.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
SqlCriteria criteria = new SqlCriteria();
criteria.setOrderBy("SORT");
DataTable dataSource = persistence.query(bean, criteria);
FormSource source = FormSourceFactory.instance();
String tagId = "grid" ;
String init = bean.getID();
source.add( tagId, dataSource, init );
}catch( Exception e ){
}finally{
}
/**
* 复合型标签(下拉框)的绑定,并且设置下拉框初始值。。。
*/
}
/**
* 添加复合型标签数据源至当前表单数据源
* <br>如果标签ID符合:单一数据源关键名_实体属性名,则自动将该单一数据源实体内的这个属性值作为初始值
* @param tagId 复合型标签的ID
* @param dataSource 数据源
*/
public void add_3(){
SF_USERS bean = new SF_USERS();
bean.setSEX("0");
try{
DaoPersistence persistence = DaoFactory.instance();
int count = persistence.sum(bean);
DataPage page = new DataPage();
page.setCount(count);
page.setIndex(0);
SqlCriteria criteria = new SqlCriteria();
criteria.setPager(page);
criteria.setOrderBy( "CTIME" );
List<SF_USERS> dataSource = persistence.queryObject(bean, criteria) ;
FormSource source = FormSourceFactory.instance();
String tagId = "grid" ;
source.add( tagId, dataSource);
}catch( Exception e ){
}finally{
}
/**
* 复合型标签(数据表格)的绑定。。。
*/
}
/**
* 添加复合型标签数据源至当前表单数据源
* @param tagId 复合型标签的ID
* @param dataSource 数据源
* @param init 初始值
*/
public void add_4(){
SF_DEPARTMENT bean = new SF_DEPARTMENT();
bean.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
SqlCriteria criteria = new SqlCriteria();
criteria.setOrderBy("SORT");
List<SF_DEPARTMENT> dataSource = persistence.queryObject(bean, criteria);
FormSource source = FormSourceFactory.instance();
String tagId = "grid" ;
String init = bean.getID();
source.add( tagId, dataSource, init );
}catch( Exception e ){
}finally{
}
/**
* 复合型标签(下拉框)的绑定,并且设置下拉框初始值。。。
*/
}
/**
* 添加单一型标签(标签ID命名需为:[单一型数据源的关键名]_[bean内属性名])数据源至当前表单数据源
* @param name 单一型数据源的关键名
* @param bean 单一型数据源的关键值(bean对象)
*/
public void add_5(){
SF_USERS bean = new SF_USERS();
bean.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
bean = persistence.fectchObject(bean);
FormSource source = FormSourceFactory.instance();
String name = "USERS" ;
source.add( name, bean );
}catch( Exception e ){
}finally{
}
/**
* 单一型标签的绑定,标签的ID需为:USERS_[bean内属性名]
*/
}
/**
* 添加单一型标签(标签ID命名需为:[实体类名全大写]_[bean内propertyName])数据源至当前表单数据源
* @param bean 单一型数据源的关键值(bean对象)
*/
public void add_6(){
SF_USERS bean = new SF_USERS();
bean.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
bean = persistence.fectchObject(bean);
FormSource source = FormSourceFactory.instance();
source.add( bean );
}catch( Exception e ){
}finally{
}
/**
* 单一型标签的绑定,标签的ID需为:SF_USERS_[bean内属性名]
*/
}
/**
* 获取当前表单数据源的JSON格式字符串,格式如下:
* <br>{ sf_bean:{bean:{id:"1",name:"1", vals:"1,3"}},
* sf_ctrl:{grid1:{ref:"ds2"} }, ds1:[ ], ds2:[ ],
* sf_dict:[] }</br>
* @return 当前表单数据源的JSON格式字符串
*/
public void toString_1(){
SF_USERS user = new SF_USERS();
user.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
user = persistence.fectchObject(user);
DataTable departments = persistence.query( new SF_DEPARTMENT() );
FormSource source = FormSourceFactory.instance();
source.add( user );
source.add("SF_DEPARTMENT_DEP_ID", departments); //以user的DEP_ID属性值作为当前下拉框的初始值
String result = source.toString();
System.out.println(result);
}catch( Exception e ){
}finally{
}
}
/**
* 将当前表单数据源转化成json字符串,并存入当前页面容器内(以source为关键名),json格式如下:
* <br>{ sf_bean:{bean:{id:"1",name:"1", vals:"1,3"}},
* sf_ctrl:{grid1:{ref:"ds2"} }, ds1:[ ], ds2:[ ],
* sf_dict:[] }</br>
* @param modelMap 页面容器
*/
public void put(){
SF_USERS user = new SF_USERS();
user.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
user = persistence.fectchObject(user);
DataTable departments = persistence.query( new SF_DEPARTMENT() );
FormSource source = FormSourceFactory.instance();
source.add( user );
source.add("SF_DEPARTMENT_DEP_ID", departments); //以user的DEP_ID属性值作为当前下拉框的初始值
Map<String,Object> modelMap = new HashMap<String,Object>(); //获取spring视图控制器的页面数据集modelMap
source.put(modelMap);
}catch( Exception e ){
}finally{
}
}
/**
* 当前表单数据源内所有子元素的总量(不含内容替换数据源)
* @return 返回子元素的总量
*/
public void size(){
SF_USERS user = new SF_USERS();
user.setID("1001");
try{
DaoPersistence persistence = DaoFactory.instance();
user = persistence.fectchObject(user);
DataTable departments = persistence.query( new SF_DEPARTMENT() );
FormSource source = FormSourceFactory.instance();
source.add( user );
source.add("SF_DEPARTMENT_DEP_ID", departments); //以user的DEP_ID属性值作为当前下拉框的初始值
int result = source.size();
System.out.println( result ); //返回2
}catch( Exception e ){
}finally{
}
}