在本文中,我们将详细介绍具有表单发布和SpringController的UTF-8编码的各个方面,并为您提供关于form表单提交的信息中含有的相关解答,同时,我们也将为您带来关于ios–与具有两个UI
在本文中,我们将详细介绍具有表单发布和Spring Controller的UTF-8编码的各个方面,并为您提供关于form表单提交的信息中含有的相关解答,同时,我们也将为您带来关于ios – 与具有两个UINavigationController的rootViewController共享相同的UIViewController、java – Spring MVC中的@Controller注释和Controller类、spring @Controller 和 @RestController 注解的区别、Spring @ControllerAdvice与ErrorController的有用知识。
本文目录一览:- 具有表单发布和Spring Controller的UTF-8编码(form表单提交的信息中含有)
- ios – 与具有两个UINavigationController的rootViewController共享相同的UIViewController
- java – Spring MVC中的@Controller注释和Controller类
- spring @Controller 和 @RestController 注解的区别
- Spring @ControllerAdvice与ErrorController
具有表单发布和Spring Controller的UTF-8编码(form表单提交的信息中含有)
我正在尝试提交一个表单,其中包含UTF8字符。该表格如下所示:
<form id="workflowPersistForm" accept-charset="UTF-8" method="post" action="/workflow-next">> <input id="stateGlobal" type="hidden" value=" お問い合わせ" name="state"></form>
我的服务器是基于spring的。我的web.xml已经具有编码过滤器:
<filter> <filter-name>EncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter>
问题在于UTF-8字符被弄乱了。我在控制器的开始处放置了一个断点,而字符本身就被弄乱了。另外,如果我在Controller内生成UTF8字符,它会在浏览器中正确呈现。只是在表单发布中,控制器无法正确接收字符。
知道我做错了什么吗?
编辑:看起来,在新页面中数据没有被弄乱,而是其双重编码。我不明白为什么它是双重编码的。
编辑2:当我将表单更改为get而不是post时,一切正常。我不知道哪个帖子坏了。
答案1
小编典典看起来浏览器不会在请求标头中将字符集作为Content-Type的一部分发送(即使在设置了表单上的accept-
charset时也是如此),而Tomcat处理诸如Latin-1(http://wiki.apache。 org / tomcat / FAQ /
CharacterEncoding#Q1)。
因此,稍后可能会将其解码为Latin-1,并将其编码为UTF-8,从而导致字符混乱。
将CharacterEncodingFilter移到顶部并强制将编码设置为UTF-8即可解决此问题。
ios – 与具有两个UINavigationController的rootViewController共享相同的UIViewController
而不是直接使用相同的UIViewController,而是使用两个设置为rootViewController的vanilla UIViewController.在他们的loadView方法中,他们调用[storyboard instantiateViewControllerWithIdentifier:]来获取前一个UIViewController,并将其视图设置为控制器的视图.这可能是首选方法,因为我需要设置几个变量和代表.
我有一个UIStoryBoard与UITabBarController作为入口点与两个UINavigationControllers连接.每个共享一个共同的UIViewController作为其根视图控制器.当应用程序启动时,第一个UITabBarItem被选中,视图按预期方式加载.但是,当我选择第二个UITabBarItem时,相同的视图是不可见的.我看到带有黑色背景的UINavigationBar.我使用Storyboard界面做错了事情,还是需要通过每个UINavigationController的方法手动实例化UIViewController – 例如loadView?
解决方法
我看到你的解决方案的问题.像这样的解决方法让我有疑问,如果iOS中的当前故事板功能已准备好创建应用程序.我认为故事板有一个概念上的问题,苹果公司需要决定一个故事板上的一个viewController是否代表一个实例,或者它是否只代表该类,现在它不一致,因为您可以看到多个变量实际上可以指向相同的viewController,但实际上每个segue都有自己的实例,为什么还没有跟rootViewController连接?我不知道.
就像您的解决方案一样,请注意Apple的文档中的以下内容:
“重要视图控制器是其视图的唯一所有者及其创建的任何子视图,它负责创建这些视图,并在适当的时候放弃其所有权,包括在低内存条件下以及视图控制器本身被释放时如果您使用故事板或nib文件来存储视图对象,则视图控制器要求它们时,每个视图控制器对象会自动获取这些视图的自己的副本,但是如果手动创建视图,则不应使用具有多个视图控制器的相同视图对象“.
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html
java – Spring MVC中的@Controller注释和Controller类
在使用注释时,我很难知道我们要使用这个@Controller获取哪种类型的Controller类
参考
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/Controller.html
这些是实现Controller类
AbstractController AbstractUrlViewController MultiActionController ParameterizableViewController ServletForwardingController ServletWrappingController UrlFilenameViewController AbstractWizardFormController SimpleFormController
但是当我们在Spring MVC中使用@Controller注释时
程序如何知道我们的@Controller注释正在实现
任何这些控制器,请有人解释我
解决方法
如今,当我们有注释时,模型已经改变了.我们可以为每个控制器类处理多个请求类型.因为在单个@Controller注释类中,我们可以处理许多请求映射.
Controller注释是一个专门的@Component,它告诉Spring它内部会找到@RequestMapping处理程序.这些处理程序可用于返回Json,HTML或上传文件.
现在,与同一模块连接的逻辑可以放在单个控制器类下,您可以更灵活地实现所需的功能.其次,@ Controller使我们能够显着减少代码量.
spring @Controller 和 @RestController 注解的区别
@Controller
弹簧和@RestController
注释之间的区别。
注释可以@Controller
同时用于 Web MVC 和 REST 应用程序吗?
如果是,我们如何区分它是 Web MVC 还是 REST 应用程序。
Spring @ControllerAdvice与ErrorController
在我的REST服务应用程序中,我计划创建一个@ControllerAdvice
类来捕获控制器引发的异常并ResponseEntity
根据错误类型返回对象。
但是我已经有一个@RestController
实现ErrorController
接口以捕获所有异常的类。
这两个是否有任何干扰?在什么情况下会ErrorController
被称为何时@ControllerAdvice
存在?
编辑:ErrorController
要求的代码
@RestControllerpublic class ControllerCustomError implements ErrorController{ //error json object public class ErrorJson { public Integer status; public String error; public String message; public String timeStamp; public String trace; public ErrorJson(int status, Map<String, Object> errorAttributes) { this.status = status; this.error = (String) errorAttributes.get("error"); this.message = (String) errorAttributes.get("message"); this.timeStamp = errorAttributes.get("timestamp").toString(); this.trace = (String) errorAttributes.get("trace"); } } private static final String PATH = "/error"; @Value("${hybus.error.stacktrace.include}") private boolean includeStackTrace = false; @Autowired private ErrorAttributes errorAttributes; @RequestMapping(value = PATH) ErrorJson error(HttpServletRequest request, HttpServletResponse response) { // Appropriate HTTP response code (e.g. 404 or 500) is automatically set by Spring. // Here we just define response body. return new ErrorJson(response.getStatus(), getErrorAttributes(request, includeStackTrace)); } @Override public String getErrorPath() { return PATH; } private Map<String, Object> getErrorAttributes(HttpServletRequest request, boolean includeStackTrace) { RequestAttributes requestAttributes = new ServletRequestAttributes(request); return errorAttributes.getErrorAttributes(requestAttributes, includeStackTrace); }}
答案1
小编典典的实现ErrorController
用于提供自定义的whitelabel错误页面。
带注释的类@ControllerAdvise
用于为整个应用程序添加全局异常处理逻辑。因此,您的应用程序中有多个控制器。
如果在您的应用程序中找不到请求或页面的映射,则spring将回退到“ whitelabel错误页面”。在这种情况下,它将是ErrorController
今天的关于具有表单发布和Spring Controller的UTF-8编码和form表单提交的信息中含有的分享已经结束,谢谢您的关注,如果想了解更多关于ios – 与具有两个UINavigationController的rootViewController共享相同的UIViewController、java – Spring MVC中的@Controller注释和Controller类、spring @Controller 和 @RestController 注解的区别、Spring @ControllerAdvice与ErrorController的相关知识,请在本站进行查询。
本文标签: