在应用程序中,有多个签名字段,初步设计为 点击字段后的按钮,弹出对话框,在其中验证用户名和密码,验证通过将用户的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" >