theonedev/onedev · error · NotAcceptableException

Unexpected setting: {0}

Error message

Unexpected setting: {0}

What it means

ContributedAdministrationSettingPage maps a setting name from page parameters to a contributed administration setting class. If no contribution registers a setting with that name, it throws NotAcceptableException with the setting name.

Source

Thrown at server-core/src/main/java/io/onedev/server/web/page/admin/pluginsettings/ContributedAdministrationSettingPage.java:59

	public ContributedAdministrationSettingPage(PageParameters params) {
		super(params);
		
		String settingName = params.get(PARAM_SETTING).toString();
		
		for (AdministrationSettingContribution contribution: 
				OneDev.getExtensions(AdministrationSettingContribution.class)) {
			for (Class<? extends ContributedAdministrationSetting> each: contribution.getSettingClasses()) {
				if (getSettingName(each).equals(settingName)) { 
					settingClass = each;
					break;
				}
			}
			if (settingClass != null)
				break;
		}

		if (settingClass == null)
			throw new NotAcceptableException(MessageFormat.format(_T("Unexpected setting: {0}"), settingName));
	}

	private SettingService getSettingService() {
		return OneDev.getInstance(SettingService.class);
	}
	
	@Override
	protected void onInitialize() {
		super.onInitialize();
		
		String help = EditableUtils.getDescription(settingClass);
		if (help != null)
			add(new Label("help", help).setEscapeModelStrings(false));
		else
			add(new WebMarkupContainer("help").setVisible(false));
		
		Form<?> form = new Form<Void>("form") {

View on GitHub (pinned to d44925c47c)

Solutions

  1. Use the Administration menu to reach the setting instead of a saved URL.
  2. Reinstall/enable the plugin that contributes the setting.
  3. Update links after plugin upgrades that renamed the setting.

Example fix

// before: /~admin/oldPluginSetting (plugin removed)
// after: open Admin menu and navigate to the contributed setting page
Defensive patterns

Strategy: fallback

Validate before calling

// verify the setting exists before deep-linking
var supported = SettingService.getContributedAdministrationSettings();
if (!supported.contains(settingName)) navigateToAdminMenu();

Try / catch

try {
    openAdminSetting(name);
} catch (NotAcceptableException e) {
    openAdminMenu();
}

Prevention

When it happens

Trigger: Navigating to an administration settings URL whose settingName does not match any plugin-contributed administration setting (e.g. after a plugin was removed or renamed its setting).

Common situations: Bookmarked admin setting pages after uninstalling/disabling a plugin; version change where a plugin renamed its setting page; hand-typed URL.

Understand the failure class

Background: "Invalid query parameter" / "Failed to parse value of ...": fixing bad query string parameters across APIs — this error's family across 36 libraries.

Related errors


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/8c626b3c6abc6096. Report an issue: GitHub.