I found using
Code:
setForeignDisplayField(DISPLAY_FIELD)
NOTE: I used setFilterEditorProperties() on the listGridField with a SelectItem using setForeignDisplayField().
Hope this helps anyone else running into the same issue
setForeignDisplayField(DISPLAY_FIELD)
class MyClass{
Long id;
String desc;
//getter and setters
}
<field name="id" type="integer" hidden="true" primaryKey="true" /> <field name="othertable_id" type="integer" foreignKey="othertable.id" displayField="othertable_desc" /> <field name="othertable_desc" includeFrom="othertable.desc" />
<field name="id" type="long" align="left" hidden="true" primaryKey="true" />
<field name="id" type="long" align="left" hidden="true" primaryKey="true" displayField="desc" includeFrom="myDS.desc"/> <field name="desc" type="text" align="left"/>
<field name="id" type="long" align="left" primaryKey="true" displayField="name"/> <field name="name" includeFrom="desc" hidden="true"/> <field name="desc" type="text" align="left"/>
<field name="managerId" foreignKey="employee.id" displayField="managerName" /> <field name="managerName" includeFrom="employee.name" hidden="true"/>
grid.setEditorCustomizer(customizer -> {
if (customizer.getEditField().getName().equals("desc")) {
Record record = customizer.getEditedRecord();
final DataSource myDS = DataSource.get("myDS");
final SelectItem selectItem = new SelectItem();
selectItem.setOptionDataSource(myDS);
selectItem.setSortField("desc");
selectItem.setDisplayField("desc");
selectItem.setValueField("id");
selectItem.setWidth("100%");
selectItem.setAutoFetchData(false);
selectItem.setAllowEmptyValue(false);
selectItem.setAddUnknownValues(false);
return selectItem;
}
return customizer.getDefaultProperties();
});
<DataSource ID="myDS" serverType="hibernate"
beanClassName="com.xyz.MyClass" lookupStyle="spring"
beanFactory="org.springframework.beans.factory.BeanFactory"
autoDeriveSchema="true" configBean="sessionFactory">
<fields>
<field name="id" type="long" align="left" hidden="true"
primaryKey="true" />
<field name="desc" type="text" align="left"/>
</fields>
<operationBindings>
<binding operationType="fetch" outputs="id,desc" />
</operationBindings>
</DataSource>
Leave a comment: