Skip to content

Commit b4e1963

Browse files
authored
Compatible with negative page number and size (#5311)
#### What type of PR is this? /kind bug /area core /milestone 2.13.x #### What this PR does / why we need it: This PR makes Halo compatible with negative page number and size parameters to resolve <#5298>. #### Which issue(s) this PR fixes: Fixes #5298 #### Special notes for your reviewer: Try to install [Hao theme](https://github.com/liuzhihang/halo-theme-hao/releases/tag/v1.4.7) and [Chirpy theme](https://github.com/AirboZH/halo-theme-chirpy/releases/tag/v1.3.3) and check the frontend pages. #### Does this PR introduce a user-facing change? ```release-note 修复因限制分页参数导致部分主题页面无法正常渲染的问题。 ```
1 parent 27db40f commit b4e1963

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

api/src/main/java/run/halo/app/extension/PageRequestImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ public class PageRequestImpl implements PageRequest {
1313

1414
public PageRequestImpl(int pageNumber, int pageSize, Sort sort) {
1515
Assert.notNull(sort, "Sort must not be null");
16-
Assert.isTrue(pageNumber >= 0, "Page index must not be less than zero!");
17-
Assert.isTrue(pageSize >= 0, "Page size must not be less than one!");
16+
if (pageNumber < 1) {
17+
pageNumber = 1;
18+
}
19+
if (pageSize < 0) {
20+
pageSize = 0;
21+
}
1822
this.pageNumber = pageNumber;
1923
this.pageSize = pageSize;
2024
this.sort = sort;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package run.halo.app.extension;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.Random;
6+
import org.junit.jupiter.api.RepeatedTest;
7+
import org.springframework.data.domain.Sort;
8+
9+
class PageRequestImplTest {
10+
11+
@RepeatedTest(10)
12+
void shouldBeCompatibleZeroAndNegativePageNumber() {
13+
var randomPageNumber = -(new Random().nextInt(0, Integer.MAX_VALUE));
14+
var page = new PageRequestImpl(randomPageNumber, 10, Sort.unsorted());
15+
assertEquals(1, page.getPageNumber());
16+
assertEquals(10, page.getPageSize());
17+
}
18+
19+
@RepeatedTest(10)
20+
void shouldBeCompatibleNegativePageSize() {
21+
var randomPageSize = -(new Random().nextInt(1, Integer.MAX_VALUE));
22+
var page = new PageRequestImpl(10, randomPageSize, Sort.unsorted());
23+
assertEquals(10, page.getPageNumber());
24+
assertEquals(0, page.getPageSize());
25+
}
26+
27+
}

0 commit comments

Comments
 (0)