diff --git a/src/main/java/run/halo/app/theme/router/RadixRouterTree.java b/src/main/java/run/halo/app/theme/router/RadixRouterTree.java index 787f9be50..e6c181361 100644 --- a/src/main/java/run/halo/app/theme/router/RadixRouterTree.java +++ b/src/main/java/run/halo/app/theme/router/RadixRouterTree.java @@ -31,9 +31,7 @@ public class RadixRouterTree extends RadixTree> @Override public void insert(String key, HandlerFunction value) throws IllegalArgumentException { - // uri decode key to insert - String decodedKey = UriUtils.decode(key, StandardCharsets.UTF_8); - super.insert(decodedKey, value); + super.insert(key, value); if (log.isDebugEnabled()) { checkIndices(); } diff --git a/src/test/java/run/halo/app/theme/router/RadixRouterTreeTest.java b/src/test/java/run/halo/app/theme/router/RadixRouterTreeTest.java index 8ea5598ff..a13c767e7 100644 --- a/src/test/java/run/halo/app/theme/router/RadixRouterTreeTest.java +++ b/src/test/java/run/halo/app/theme/router/RadixRouterTreeTest.java @@ -7,6 +7,7 @@ import java.net.URISyntaxException; import org.junit.jupiter.api.Test; import org.springframework.http.HttpMethod; import org.springframework.mock.web.reactive.function.server.MockServerRequest; +import org.springframework.web.reactive.function.server.ServerResponse; /** * Tests for {@link RadixRouterTree}. @@ -41,4 +42,10 @@ class RadixRouterTreeTest { .method(HttpMethod.GET).build(); assertThat(RadixRouterTree.pathToFind(request)).isEqualTo("/?p=fake-post"); } + + @Test + void shouldInsertKeyWithPercentSign() { + var tree = new RadixRouterTree(); + tree.insert("/1%1", request -> ServerResponse.ok().build()); + } } \ No newline at end of file