theonedev/onedev · error · NotAcceptableException
Invalid issue number: {0}
Error message
Invalid issue number: {0} What it means
IssueDetailPage parses the issue number from the page parameters; when the string cannot be parsed as a Long it throws NotAcceptableException with this message. This happens before any database lookup, so it is purely a parameter-format validation error.
Source
Thrown at server-core/src/main/java/io/onedev/server/web/page/project/issues/detail/IssueDetailPage.java:114
public IssueDetailPage(PageParameters params) {
super(params);
String issueNumberString = params.get(PARAM_ISSUE).toString();
if (StringUtils.isBlank(issueNumberString)) {
throw new RestartResponseException(ProjectIssueListPage.class,
ProjectIssueListPage.paramsOf(getProject(), null, 0));
}
issueModel = new LoadableDetachableModel<Issue>() {
@Override
protected Issue load() {
Long issueNumber;
try {
issueNumber = Long.valueOf(issueNumberString);
} catch (NumberFormatException e) {
throw new NotAcceptableException(MessageFormat.format(_T("Invalid issue number: {0}"), issueNumberString));
}
Issue issue = issueService.find(getProject(), issueNumber);
if (issue == null) {
throw new EntityNotFoundException(MessageFormat.format(_T("Unable to find issue #{0} in project {1}"), issueNumber, getProject()));
} else {
issue = issue.resolveMovedTo();
issueLinkService.loadDeepLinks(issue);
if (!issue.getProject().equals(getProject()))
throw new RestartResponseException(getPageClass(), paramsOf(issue));
return issue;
}
}
};
}
public Issue getIssue() {View on GitHub (pinned to d44925c47c)
Solutions
- Use only the numeric issue number in the URL (e.g. /~issues/1234).
- If generating links in code, pass Long.toString(issueNumber) rather than a textual issue key.
- Check the URL for truncation or accidental non-numeric characters.
Example fix
// before String url = "/~issues/" + issueKey; // "ABC-12" // after String url = "/~issues/" + issue.getNumber(); // "12"
Defensive patterns
Strategy: validation
Validate before calling
if (!issueNumberStr.matches("\\d+")) throw new IllegalArgumentException("Issue number must be numeric: " + issueNumberStr);
Long issueNumber = Long.valueOf(issueNumberStr); Type guard
Long parseIssueNumber(String s) { try { return Long.valueOf(s); } catch (NumberFormatException e) { return null; } } Try / catch
try { open(IssueDetailPage.paramsOf(number)); } catch (NumberFormatException e) { log.error("Non-numeric issue number in URL"); } Prevention
- Generate issue URLs with IssueDetailPage.paramsOf(issue) instead of string concatenation.
- Never embed textual issue keys (e.g. ABC-12) where a bare number is required.
- Validate URL parameters numerically before use.
When it happens
Trigger: Visiting an issue detail URL where the number segment is non-numeric, e.g. /~issues/abc instead of /~issues/42; malformed URL generation or path truncation producing a non-numeric issue number.
Common situations: Truncated/corrupted bookmarks; scripts interpolating a string value (e.g. an issue key like 'ABC-12') where a bare number is required; mistyped URLs.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
Related errors
- Invalid pack ID: {0}
- Invalid pull request number: {0}
- Invalid number: ${token}
- Resource class not found: ${className}
- Issue management not enabled in this project
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/56a0d24eb4509dc7.
Report an issue: GitHub.