我有一张地图:
Map<String, String> utilMap = new HashMap();
utilMap.put("1","1");
utilMap.put("2","2");
utilMap.put("3","3");
utilMap.put("4","4");
Run Code Online (Sandbox Code Playgroud)
我把它转换成了一个字符串:
String utilMapString = utilMap
.entrySet()
.stream()
.map(e -> e.toString()).collect(Collectors.joining(","));
Out put: 1=1,2=2,3=3,4=4,5=5
Run Code Online (Sandbox Code Playgroud)
如何在Java8中将utilMapString转换为Map?谁能帮帮我?
我创建了一个控制器来进行数据搜索。但是当我死于关键字'%'时,它将返回HTTP 400错误。这是控制者:
@RequestMapping(value = "/search/{txtKeyWord}")
public String pageVipStory(@PathVariable("txtKeyWord") String txtKeyWord, Model model) {
logger.info("Keyword In URL: " + txtKeyWord);
model.addAttribute("txtKeyWord", txtKeyWord);
model.addAttribute("txtKeyWordEndCode", UriUtils.encode(txtKeyWord, "UTF-8"));
getMenuAndInfo(model, "Search " + txtKeyWord);
return "web/searchPage";
}
Run Code Online (Sandbox Code Playgroud)
通过链接:“ http:// localhost:8080 / search /%25 ”,错误消息:
org.springframework.security.web.firewall.RequestRejectedException:请求被拒绝,因为URL在org.springframework.security.web.firewall.StrictHttpFirewall.rejectedBlacklistedUrls(StrictHttpFirewall.java:325)处包含潜在的恶意字符串“%25” [spring-security-web-5.1.1.RELEASE.jar:5.1.1.RELEASE]位于org.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:293)〜[spring-security-web- 5.1.1.RELEASE.jar:5.1.1.RELEASE],位于org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:194)〜[spring-security-web-5.1.1.RELEASE.jar:5.1 .1.RELEASE]位于org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)〜[spring-security-web-5.1.1.RELEASE.jar:5.1.1。RELEASE]位于org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]。 DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜 [tomcat-embed-core-9.0.12.jar:9.0.12]在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.12.jar: 9.0.12],位于org.springframework.web的org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]。 filter.OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat -embed-core-9.0.12.jar:9.0.12],位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.12.jar:9.0。 12],位于org.springframework.web.filter的org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]。 OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜 [tomcat-embed-core-9.0.12.jar:9.0.12]位于org.apache。catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.12.jar:9.0.12]在org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93 )〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-5.1.2。在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)处[RELEASE.jar:5.1.2.RELEASE]〜在组织处的[tomcat-embed-core-9.0.12.jar:9.0.12]。 apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.12.jar:9.0.12]在org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter .filterAndRecordMetrics(WebMvcMetricsFilter.java:154)〜[spring-boot-actuator-2.1.0.BUILD-20181030.063958-621.jar:2.1.0.BUILD-SNAPSHOT]在org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter .java:122)〜[spring-boot-actuator-2.1.0.BUILD-20181030.063958-621.jar:2.1.0.BUILD-SNAPSHOT]在org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter。 doFilterInternal(WebMvcMetricsFilter.java:107)〜[spring-boot-actuator-2.1.0.BUILD-20181030.063958-621.jar:2.1.0.BUILD-SNAPSHOT]位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter) .java:107)〜[spring-web-5.1.2.RELEASE.jar:5.1.2.RELEASE]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-核心-9.0.12.jar:9.0.12],位于org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.12.jar:9.0.12]在org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)〜[spring -web-5.1.2.RELEASE.jar:5.1.2.RELEASE],位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-5.1.2.RELEASE.jar: 5.1.2.RELEASE]位于org.apache.catalina的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.12.jar:9.0.12]。 core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.12.jar:9.0.12]在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)〜 [tomcat-embed-core-9.0.12.jar:9.0。12] at org.apache.catalina.authenticator.AuthenticatorBase.invoke上的org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[tomcat-embed-core-9.0.12.jar:9.0.12] (AuthenticatorBase.java:490)[tomcat-embed-core-9.0.12.jar:9.0.12]在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)[tomcat-embed-core- org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)的9.0.12.jar:9.0.12] [org.apache的tomcat-embed-core-9.0.12.jar:9.0.12] .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)[tomcat-embed-core-9.0.12.jar:9.0.12]在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343 )[tomcat-embed-core-9.0.12.jar:9.0.12],位于org.apache.coyote.http11.Http11Processor。service(Http11Processor.java:408)[tomcat-embed-core-9.0.12.jar:9.0.12] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[tomcat-embed-core-9.0 .12.jar:9.0.12],位于org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:770)[tomcat-embed-core-9.0.12.jar:9.0.12],位于org.apache。 tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1415)[tomcat-embed-core-9.0.12.jar:9.0.12]在org.apache.tomcat.util.net.SocketProcessorBase.run( SocketProcessorBase.java:49)[tomcat-embed-core-9.0.12.jar:9.0.12]在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[na:1.8.0_172]在java。 org.apache.tomcat上的util.concurrent.ThreadPoolExecutor …
我有一个处理密码更改的表格。
<form method="POST" th:object="${changePassword}" th:action="@{/user/change_pass}">
<input type="password" class="form-control" id="oldpass" th:field="*{oldPassword}">
<input type="password" class="form-control" id="newpass" th:field="*{newPassword}"
<input type="password" class="form-control" id="confirmPass" th:field="* {confirmNewPassword}"
<input type="submit" class="btn btn-outline-primary btn-rounded waves-effect" value="Send"/>
</form>
Run Code Online (Sandbox Code Playgroud)
在控制器中
@GetMapping(value = "/user/change_pass")
private String changePasswordPage(Model model){
if (!model.containsAttribute("changePassword")) {
model.addAttribute("changePassword", new ChangePassword());
}
return "web/view/accPasswordPage";
}
@PostMapping(value = "/user/change_pass")
private String saveNewPassword(@Valid ChangePassword changePassword, BindingResult result, Model model, RedirectAttributes redirectAttributes){
if (result.hasErrors()) {
redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.changePassword", result);
redirectAttributes.addFlashAttribute("changePassword", changePassword);
return "redirect:/user/change_pass";
}
return "redirect:/user/home";
}
Run Code Online (Sandbox Code Playgroud)
当用户单击“发送”时,如果出现错误并返回,但表单数据丢失,如下所示:

有什么办法可以让用户输入的数据不丢失但仍然保留?谢谢