theonedev/onedev · error · ExplicitException
No property found with name: ${propertyNameOrDisplayName}
Error message
No property found with name: ${propertyNameOrDisplayName} What it means
BeanDescriptor.getPropertyName resolves a property name given either the actual property name or its display name, by scanning the descriptor's property groups. When neither matches any property of the bean, it throws this ExplicitException. It is used by editable-form machinery to translate user-facing names into bean property names.
Source
Thrown at server-core/src/main/java/io/onedev/server/web/editable/BeanDescriptor.java:116
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException | SecurityException e) {
throw new RuntimeException(e);
}
}
public boolean isPropertyVisible(String propertyNameOrDisplayName) {
return getProperty(propertyNameOrDisplayName).isPropertyVisible(new HashMap<>(), this);
}
public String getPropertyName(String propertyNameOrDisplayName) {
for (List<PropertyDescriptor> groupProperties: properties.values()) {
for (PropertyDescriptor property: groupProperties) {
String displayName = property.getDisplayName();
if (property.getPropertyName().equals(propertyNameOrDisplayName) || displayName.equals(propertyNameOrDisplayName))
return property.getPropertyName();
}
}
throw new ExplicitException("No property found with name: " + propertyNameOrDisplayName);
}
}
View on GitHub (pinned to d44925c47c)
Solutions
- Print/inspect the bean's properties (e.g. via new BeanDescriptor(beanClass).getProperties()) and use the exact property name.
- If using a display name, confirm the @Editable(name=...) value matches exactly (case-sensitive equals).
- Fix typos or update the reference after a rename/upgrade.
- Check you are resolving against the correct bean class.
Example fix
// before
String prop = new BeanDescriptor(BuildSpec.class).getPropertyName("Cpu");
// after
String prop = new BeanDescriptor(BuildSpec.class).getPropertyName("cpu"); // exact property name or exact display name Defensive patterns
Strategy: validation
Validate before calling
BeanDescriptor desc = new BeanDescriptor(MyBean.class);
boolean exists = desc.getProperties().stream().anyMatch(p ->
p.getPropertyName().equals(name) || p.getDisplayName().equals(name));
if (!exists) throw new IllegalArgumentException("Unknown property: " + name); Try / catch
try {
String prop = beanDescriptor.getPropertyName(name);
} catch (ExplicitException e) {
log.error("Property '{}' not found on {}; available: {}", name,
beanClass, availablePropertyNames, e);
} Prevention
- Always reference properties by programmatic name, not display name; display names change across versions.
- List the bean's properties once during development to copy exact names.
- After renaming a property, grep for the old name in configs/scripts/annotations.
- Keep property name strings in constants shared with the bean definition where possible.
When it happens
Trigger: Calling BeanDescriptor.getPropertyName(name) (directly or via APIs that accept a property name/display name, e.g. field ordering or scripting helpers) with a string that matches neither PropertyDescriptor.getPropertyName() nor getDisplayName() of any property in the bean class.
Common situations: Typo in a property name in configuration or script; using the display name after it was renamed in an @Editable annotation; referencing a property that exists on a different bean class; version upgrade renamed a field.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Getter not found (class: %s, property: %s)
- Dependency property not found: ${property}
- Getter not found for property: ${propertyName}
- Getter not found for property: ${dependsOn.property()}
- Error invoking getter for property: ${dependsOn.property()}
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/9a88f669d26d1326.
Report an issue: GitHub.