Skip to Content
DocsAnnotation Quick Reference

Annotation quick reference

AnnotationTargetRepeatableDescription
@PortalEntityClassNoRegisters entity; sets label, module, icon, tabs, permissions, page size, soft-delete
@PortalActionClassYesDeclares action button with CDI handler, optional form, confirmation
@PortalSecurityClassNoRole-based access control (view/edit/delete/action + row-level ownership)
@PortalFieldField/FunctionNoDeclares UI field; sets renderer, filter, validation, width, group
@PortalRelationFieldNoConfigures target entity, display columns, per-row actions for RELATION/RELATION_LIST
@PortalLookupField/FunctionNoConfigures lookup label/value fields, filter, cascading dependency, parentField
@PortalDependencyField/FunctionYesConditional visibility, allowed values, numeric range
@PortalFormFieldFieldNoDescribes a field in the action input form model (use @field:)
@RegexFieldNoAttaches regex pattern for client-side frontend validation
RowColorProviderInterface (class)Implement to control row background color in the table

Which renderer to use?

Kotlin/JPA typeRecommended renderer
String (short)TEXT, EMAIL, URL, PASSWORD, COLOR
String (long)TEXTAREA
String (JSON)JSON
Int, LongNUMBER
Double, BigDecimalDECIMAL
BooleanBOOLEAN
EnumSELECT with selectEnum
Enum listMULTI_SELECT with selectEnum
Foreign key (Long?)RELATION + @PortalRelation + @PortalLookup
Entity collectionRELATION_LIST + @PortalRelation + @PortalLookup
File pathFILE
@Column(...) // 1. JPA @Enumerated(...) // 2. JPA (optional) @Regex(...) // 3. Pattern validation @PortalField(...) // 4. UI field declaration @PortalRelation(...) // 5. Relation config (if applicable) @PortalLookup(...) // 6. Lookup config (if applicable) @PortalDependency(...) // 7. Conditional rules (if applicable, repeatable) var fieldName: Type = defaultValue
Last updated on