在應用程序中,有多個簽名字段,初步設計爲 點擊字段後的按鈕,彈出對話框,在其中驗證用戶名和密碼,驗證通過將用戶的displayname 寫入簽名字段。
問題在於,如果使用現在的dialog類,無法獲取到對話框是從哪個字段彈出的,所以需要每個字段綁定一個dialog。
後來在treeControlBean中發現,tree可以獲取到dataattribute,即觸發源字段。 仿照tree類,改寫dialog。
public class Dialog extends psdi.webclient.controls.Dialog {
private String sourceDataAttribute;
private ControlInstance sourceControl;
private DialogContrloBean dialogDataBean;
public String getSourceDataAttribute() {
return sourceDataAttribute;
}
public void setSourceDataAttribute(String sourceDataAttribute) {
this.sourceDataAttribute = sourceDataAttribute;
}
public Dialog(){
super();
sourceDataAttribute = null;
dialogDataBean = null;
}
/**
* 獲取dialog的sourceDataAttribute。
*/
public void initialize() {
super.initialize();
sourceControl = getWebClientSession().getCurrentEvent().getSourceControlInstance();
if(sourceControl != null)
{
sourceDataAttribute = sourceControl.getProperty("dataattribute");
if(sourceDataAttribute.equals("") || null==sourceDataAttribute){
return;
}
}
dialogDataBean = (DialogContrloBean)getDataBean();
dialogDataBean.setSourceDataattribute(sourceDataAttribute);
}
}
這樣就可以在databean類裏面獲取到源字段。
在control-registry.xml 修改組件dialog對應的類,指定到自己的類即可。
<control-descriptor name="dialog" descriptor-class="psdi.webclient.system.runtime.DatasrcDescriptor" instance-class="${package}.Dialog" >