99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

11.BDF2-PROFILE

2023-07-03 17:33 更新
BDF2-PROFILE模塊提供了一個允許管理員對系統(tǒng)當中頁面組件的顯示進行個性化定制的功能。對于這種組件的個性化定制,管理可以將其施加給某個用戶、某個部門或某個公司等,一旦對目標群體(用戶、部門或者公司)施加了個性化定制功能,那么隸屬于這個用戶、部門或者公司的人登錄系統(tǒng)之后就可以看到這個頁面被管理員修改后的效果,接下來們舉個例子來說明這個功能的適用場景。

假如我們需要開發(fā)一個系統(tǒng),這個系統(tǒng)將以SAAS模式給不同的公司去使用,但對于某一些功能頁面,不同的公司對頁面顯示效果要求可能也略有不同,比如某個業(yè)務系統(tǒng)維護頁面,某些公司可能其中的一個表單中字段A、B、C的顯示順序為A、B、C,但有些公司可能因為某些原因希望將順序改成B、C、A,對于這樣一種需求,因為兩家公司習慣不同,對頁面的顯示要求也不相同,但這么一點不同又不值得我們專門開發(fā)一個頁面特地給這家公司使用,這個時候就可以利用BDF2-PROFILE模塊輕松解決這個問題。當然,BDF2-PROFILE模塊能個性化的功能不僅僅是表單元素或表格列的顯示順序,它幾乎可以實現所有的支持屬性及事件定義的組件個性化定制,比如針對不同的公司為某個Button設置不同的caption,或者針對不同公司為某個UpdataAction設置不同的保存前的確認消息或保存成功之后的提示消息等。

要使用BDF2-PROFILE模塊,首先需要將BDF2-PROFILE模塊相關的jar放置到我們的項目當中,具體做法就是可以到nexus.bsdn.org上下載BDF2-PROFILE模塊相關jar或到我們提供的在線項目向導當中,創(chuàng)建一個包含BDF2-PROFILE模塊的項目,當然如果您采用的是Maven來管理我們的項目,那么只需要在我們項目的 pom.xml當中添加下面的依賴信息即可。
BDF2-PROFILE模塊的依賴信息
<dependency>
 <groupId>com.bstek.bdf2</groupId>
 <artifactId>bdf2-profile</artifactId>
 <version>2.0.0</version>
</dependency>
添加完BDF2-PROFILE模塊所需要的jar之后,接下來還需要編寫一個IProfileDataService接口實現類,并將其配置到Spring當中,否則啟動時會拋出下面的異常:
異常消息
Caused by: java.lang.RuntimeException: The current spring application context without a
[com.bstek.bdf2.profile.service.IProfileDataService] interface implementation
 at
com.bstek.bdf2.profile.view.component.ComponentMaintain.afterPropertiesSet(ComponentMaintain.java:
414)
 at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
 at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
 ... 23 more
我們來看看IProfileDataService接口實現類代碼:
IProfileDataService接口源碼
package com.bstek.bdf2.profile.service;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.bstek.bdf2.profile.model.AssignTarget;
import com.bstek.bdf2.profile.model.UrlDefinition;
import com.bstek.dorado.data.provider.Criteria;
import com.bstek.dorado.data.provider.Page;
/**
 * 使用profile模塊必須實現的接口
 * @author Jacky.gao
 * @since 2013-2-26
 */
public interface IProfileDataService {
 /**
 * 根據給出的父ID,返回其下所有子的URL,實現URL樹構建
 * @param companyId 所在公司(或其它)的ID
 * @param parentId 父URL ID
 * @return 返回指定父ID的URL集合
 */
 List<UrlDefinition> loadUrls(String companyId,String parentId);
 /**
 * 分頁加載分配資源的目標對象
 * @param page Dorado7分頁對象
 * @param criteria 過濾查詢對象
 */
 void loadAssignTargets(Page<AssignTarget> page,Criteria criteria);
 /**
 * 返回加載個性化信息需要使用的分配資源目標對象的ID,比如username,companyid之
 * @return 一個字符串
 */
 String getAssignTargetId(HttpServletRequest request);
}
接下來我們編寫一個IProfileDataService接口實現類,代碼如下:
IProfileDataService接口實現類源碼
package test;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import com.bstek.bdf2.core.context.ContextHolder;
import com.bstek.bdf2.core.model.Url;
import com.bstek.bdf2.core.view.url.UrlMaintain;
import com.bstek.bdf2.profile.model.AssignTarget;
import com.bstek.bdf2.profile.model.UrlDefinition;
import com.bstek.bdf2.profile.service.IProfileDataService;
import com.bstek.dorado.data.provider.Criteria;
import com.bstek.dorado.data.provider.Page;
@Component
public class TestProfileDataService implements IProfileDataService {
 @Autowired
 @Qualifier("bdf2.urlMaintain")
 private UrlMaintain urlMaintain;
 public List<UrlDefinition> loadUrls(String companyId,String parentId) {
 List<UrlDefinition> list=new ArrayList<UrlDefinition>();
 try {
 for(Url url:urlMaintain.loadUrls(parentId)){
 UrlDefinition def=new UrlDefinition();
 def.setId(url.getId());
 def.setUrl(url.getUrl());
 def.setName(url.getName());
 def.setParentId(parentId);
 list.add(def);
 }
 } catch (Exception e) {
 throw new RuntimeException(e);
 }
 return list;
 }
 public void loadAssignTargets(Page<AssignTarget> page, Criteria criteria) {
 List<AssignTarget> targets=new ArrayList<AssignTarget>();
 AssignTarget t1=new AssignTarget();
 t1.setId("root-bstek");
 t1.setName("上海銳道");
 targets.add(t1);
 
 AssignTarget t2=new AssignTarget();
 t2.setId("root-ibm");
 t2.setName("IBM中國");
 targets.add(t2);
 page.setEntities(targets);
 }
 public String getAssignTargetId(HttpServletRequest request) {
 return ContextHolder.getLoginUser()==null?null:ContextHolder.getLoginUser().getCompanyId();
 }
}
從實現類當中可以看到,在第一個方法加載菜單時,我們使用時BDF2-CORE模塊當中加載菜單的類,實際應用當中,如果您項目當中沒有CORE模塊,那么,您需要自己編寫加載URL菜單的代碼;第二個方法加載需要分配個性化信息的目標對象時,我們虛擬了兩家公司,實際應用當中,可以是公司,也可以是部門、群組或者直接分給某個用戶;最后一個方法是系統(tǒng)在加載個性化信息時使用的,這里與前面對應采用的是公司的ID。

實現類編寫好并配置到Spring當中之后,接下來啟動我們的項目,瀏覽com.bstek.bdf2.profile.view.component.ComponentMaintain.d這個URL,可以看到如下圖所示的頁面效果:

可以看到,在選擇不同的公司后,對應的URL菜單也會加載進來,在選擇不同的URL時,這個URL對應的頁面組件會被剖析成一棵樹形,在這棵樹當中找到我們需要進行個性化調整的組件,設置它的屬性、事件或其下子組件的順序。在做完這些操作之后,別忘記刷新系統(tǒng)緩存,否則將不會生效。
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號