gpt4 book ai didi

java - Spring Boot @GetMapping 到以 .jsp 结尾的 URL

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:08 26 4
gpt4 key购买 nike

我们有一个 URL 必须以(客户要求)结尾,例如/test.jsp。

现在我们终于运行了 Spring Boot (2.1.1.RELEASE),我们想放弃 JSP 并使用一些模板引擎,在本例中为 Mustache。我有一个像这样的 Controller 映射:

@Controller
@RequestMapping("/")
public class TestController {

@GetMapping(path = "/test.jsp")
public ModelAndView test(...) {...}
}

这根本行不通。我有

spring.mvc.pathmatch.use-suffix-pattern=true

在我们的application.properties中,任何与spring.mvc.view相关的内容都被注释掉,当我仅使用/test添加另一个映射时,它适用于/test。有趣的是,我在使用 Spring MVC 和 Thymeleaf 时设法得到了同样的效果,但我似乎找不到区别。

此外,我为此添加了一个测试,如下所示:

@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
class TestTest {

@Autowired
private MockMvc mockMvc;

@Test
void test() throws Exception {
final MockHttpServletRequestBuilder testRequestBuilder = MockMvcRequestBuilders.get("/test.jsp");

MvcResult responseResult = mockMvc.perform(testRequestBuilder).andReturn();


response = responseResult.getResponse();
assertThat(response.getStatus(), equalTo(HttpStatus.OK.value()));
}

}

效果很好,响应的内容也正是我想要的。测试配置文件暂时与使用mvn spring-boot:run时相同。

有人知道如何让它发挥作用吗?谢谢!

最佳答案

该点可能被截断。或逃脱。你也许可以这样做:

@GetMapping("/{pageName:.+}")   
public void test(
@PathVariable("pageName") String pageName) {
if(pageName.equals("test.jsp")) {
//...
}

我知道你并不完全想要一个变量,只是提出一个想法

关于java - Spring Boot @GetMapping 到以 .jsp 结尾的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54595497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com