Tag: spring mvc

spring mvc one init binder适用于所有控制器

我有5个控制器,我想向所有人注册一个InitBinder 。 我知道我可以将这些代码添加到每个代码中。 @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(StringWrapper.class, new StringWrapperEditor()); } 但我想只定义一次 (甚至创建一个StringWrapperEditor的bean并使用它而不是每次都创建新的。) 我搜索了SO和其他一些地方,但没有发现任何安装。 它甚至可能吗? 我使用Spring 3.1.1与java 1.6。

弹簧控制器中的圆形视图

我正在尝试在Spring控制器中提供静态资源。 我有一个index.html文件,应该返回给每个请求。 我的控制器是: @Controller public class IndexController { @RequestMapping(value = “/**”, method = RequestMethod.GET) public String index() { return “index.html”; } } 我还添加了资源处理程序: @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(“/**”).addResourceLocations(“classpath:/”); } 但最后我有以下exception: 圆形视图路径[/index.html]:将再次调度回当前处理程序URL [/index.html]。 检查您的ViewResolver设置! (提示:由于生成默认视图名称,这可能是未指定视图的结果。) 我明白,在我的配置中,所有请求都将由我的Spring控制器处理。 因此,当我请求,例如http://localhost/someText ,该请求将与我的控制器一起处理,然后我的控制器发送重定向到//localhost/index.html ,此请求转到Spring的DispatcherServlet然后重定向到我的再次控制器,导致上面的exception。 此外,我已经尝试了一些选项:制作网页filter,将我的请求处理到/index.html而不是通过spring servlet,但是通过默认的(在我的情况下是默认的服务器的默认服务),但是这是不可能的,因为我的应用程序不是打包为war,我的index.html文件位于/src/java/resources 。 实际上我发现,对我来说主要的问题是在我的请求的Spring的DispatcherServlet处理程序( //localhost/index.html )被检测为我的控制器,而不是资源处理程序。 protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { for (HandlerMapping […]

使用SpringMVC表单:选择将逗号分隔值绑定到多个下拉列表

我正在设计一个jsp页面,用户可以从下拉列表中选择值: 第1行:选择“下拉列表” 第2行:选择“下拉列表” 第3行:选择“dropdown1”“dropdown2” 哪里: 下拉值为{1,2,3,4,5,6,7} 用户可以从上面的行中选择值并保存表单。 下次用户查看页面并从数据库中检索保存的值时,我想在下拉列表中显示它们。 为此我使用Spring MVC表单:选择自动绑定 该代码适用于Row1和Row2,只有1个下拉列表可以绑定。 但是在Row3的情况下,Mappings [$ {index}]。userSetting返回的值类似于“2,3”(而不是单个值),这些值来自dropdownValues列表但以逗号分隔。 在这种情况下,出于显而易见的原因,Spring MVCforms:select无法从下拉列表中选择值,因为在下拉列表中找不到“2,3”。 我想要做的是分割值,以便从“2,3”,选择值“2”和“3”,使Row3看起来像: 之前:选择“dropdown1”“dropdown2”之后:选择“2”“3” 有没有人建议如何做到这一点?

允许Spring MVC 3.0中的音频文件?

我正在使用Spring MVC 3.0,我在其中指定了以下mvc:resources标签,以允许静态资源通过: – 不知何故,我在使我的音频文件工作时遇到问题。 我决定将图像文件放在同一位置,只是为了测试路径,并且工作正常。 http://server/context/resources/test/image.jpg -> works fine http://server/context/resources/test/audio.mp3 -> I get 404 error 我阅读了Spring MVC文档 ,它实际上没有描述什么被认为是静态资源,我认为mp3文件是一个静态资源。 如何让我的音频文件与Spring MVC 3.0一起使用? 谢谢。 编辑 我的servlet.xml看起来像这样: –

错误:Spring 3.0.3 MVC Portlet + JSON的’ContentNegotiatingViewResolver’

我想使用DispatcherPortlet类生成spring MVC 3.0.3 portlet并支持JSON。 所以,我在spring上下文文件中添加了以下配置。 text / html的 如果没有这个,如果我只使用’InternalResourceViewResolver’那么它运行正常,我可以使用portlet。 但是定义了这个bean后,我在tomcat启动时遇到了以下错误。 我google了一下,找到一个链接,声明这个带有JSON的bean只能在最新的spring vesion中使用servlet。 请检查链接。 http://jira.springframework.org/browse/SPR-7344(portlets的 JSON问题……) http://jira.springframework.org/browse/SPR-6932?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel#issue-tabs 另请检查下面粘贴的错误。 帮帮我……谢谢。 :错误: java.lang.IllegalArgumentException: Object of class [org.springframework.web.portlet.context.PortletRequestAttributes] must be an instance of class org.springframework.web.context.request.ServletRequestAttributes 请检查日志 Caused by: java.lang.IllegalArgumentException: Object of class [org.springframework.web.portlet.context.PortletRequestAttributes] must be an instance of class org.springframework.web.context.request.ServletRequestAttributes at org.springframework.util.Assert.isInstanceOf(Assert.java:337) at org.springframework.util.Assert.isInstanceOf(Assert.java:319) at org.springframework.web.servlet.view.ContentNegotiatingViewResolver.resolveViewName(ContentNegotiatingViewResolver.java:363) at org.springframework.web.portlet.DispatcherPortlet.resolveViewName(DispatcherPortlet.java:1110) at […]

如何在Spring Boot中获取DispatcherServeletInitializerfunction

我们希望将项目迁移到Spring Boot。 但是,目前还不清楚如何在Spring Boot中复制AbstractAnnotationConfigDispatcherServletInitializer的function? public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class[] getRootConfigClasses() { return new Class[]{AppConfig.class}; } @Override protected Class[] getServletConfigClasses() { return new Class[]{WebappConfig.class}; } @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { registration.setAsyncSupported(true); } @Override protected String[] getServletMappings() { return new String[]{“/”}; } @Override protected Filter[] getServletFilters() { DelegatingFilterProxy shiroFilter = new DelegatingFilterProxy(“shiroFilter”); […]

如何在Maven多模块Spring Web应用程序中自动挂载类?

我正在开发包含Maven多模块项目的应用程序。 当从另一个模块尝试@Autowire服务类时,我得到java.lang.NoClassDefFoundError:这个项目的独特之处在于两个Web模块之间的依赖关系。 家长项目 的pom.xml com.test.simple-project simple-parent pom module-x module-y org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 模块X. 的pom.xml module-x ${project.groupId} simple-parent war … maven-eclipse-plugin 2.9 org.springframework.ide.eclipse.core.springnature org.springframework.ide.eclipse.core.springbuilder true true org.apache.maven.plugins maven-compiler-plugin 2.5.1 1.6 1.6 -Xlint:all true true org.codehaus.mojo exec-maven-plugin 1.2.1 org.test.int1.Main package com.test.module-x.service; @Service(“userService”) public class UserServiceImpl implements UserService { } 模块Y. 的pom.xml module-y ${project.groupId} simple-parent ${project.version} […]

什么是Spring Framework中的EJB替代方案

我试图学习Spring Framework,之前我曾经用EJB创建应用程序 [Web services]->[Business Layer]->[DAO Layer] | [数据库] 以下方式 WebServices :使用Jersey和url mappings Restful API,支持JSON和XML格式( news/list.json , news/list.xml )。 一旦端点(url-mapped-method)收到请求,它就会通过查找(远程,本地)转发到相关的EJB。 EJB处理每一件事,应用业务规则并将结果作为DTO(数据传输对象)返回,然后Service将结果转换为所需的格式(JSON,XML) 业务层 :在EJB使用remote和local接口实现的业务层(Facade),这些EJB可以调用其他EJB。 WebService层(和/或Timer服务和MDB)也可以调用任何EJB)。 对于与计时器服务相关的function,我使用了EJB Timer Service ,而Message使用了Message Drive Bean和拦截器来进行日志记录和审计。 DAO Layer :所有与数据库相关的函数(添加,编辑,删除,搜索)使用EntityManager编写JPA/Hibernate (实体bean和HQL)。 无缝事务支持,每个EJB的方法(基于查询)调用被视为一个单独的事务,DAO层的调用方法是同一事务的一部分(假设没有提供额外的配置)。 在单个事务中执行多个操作如果一个db操作失败,则所有其他操作将自动回滚。 每个表都映射为具有关系等的实体类。 我曾经在Spring MVC但是无法正确地映射/理解上面的架构我对AOP有点了解并且我认为它是拦截器的完美替代品(或者至少它对我有用) 现在我的问题是如何在Spring框架中替换所有这些 ? 泽西(RestAPi)替代spring> Spring中的EJB替代方案(因为EJB支持远程处理,对方法的每次查找调用都被视为事务,对EJB方法的调用可以被拦截,并且它带有状态完全和无状态的风格)? Spring中的定时服务替代方案? Spring中的Message Drive Bean替代方案? 拦截器替代品是春季的AOP(根据我的经验,这符合我的目的) JPA(实体经理)在春季的替代方案?

为什么不能从ui应用程序读取spring boot angularjs网关应用程序?

我正在使用以下链接中的教程了解spring的可伸缩性function。 具体来说, 本教程的第6部分使用网关应用程序来管理对其他服务器上运行的应用程序的访问。 我已经完全按照以下步骤操作,但是当我启动所有三个应用程序然后在我的网络浏览器中输入localhost:8080/ui ,我得到的是“问候”这个词,没有id或hello world,也没有css。 当我在Firefox中打开请求的开发人员工具时,我看到对css和js资源的GET请求获得404错误,指向http://localhost:8080/js/hello.js 而不是指向http://localhost:8080/ui/js/hello.js ,正如本教程的测试部分所示。 如何更改此设置以便在浏览器中显示问候语? 以下是我一步一步完成的工作,按照教程的第六步,首先从第一部分重新创建ui起点,从第三部分重新创建resource起点: 创建UI示例启动器应用程序 # mkdir ui # chmod -R 777 ui # cd ui # curl https://start.spring.io/starter.tgz -d style=web -d style=security -d name=ui | tar -xzvf – Eclipse>文件>导入>现有Maven项目>导航到ui文件夹>完成 在src/main/resources/static创建index.html并添加以下内容: Hello AngularJS [ng\:cloak], [ng-cloak], .ng-cloak { display: none !important; } Greeting The ID is {{greeting.id}} The content […]

Spring boot – 控制器捕获所有URL

我正在构建一个Spring启动Web应用程序,并使用注释进行控制器/ URL映射。 我有几个带@RequestMapping注释的控制器,其中url值设置(空字符串和特定URL),这些控制器工作正常,例如 @Controller @RequestMapping(“/accounts”) class SignInController { @Autowired PartyService partyService @RequestMapping(value=””, method = RequestMethod.GET ) public String signinPage( Model model) { 导航到/ accounts会正确呈现登录页面。 但是,如果我添加一个没有RequestMapping值的控制器,例如 @Controller class CustomController { @RequestMapping public String transform( Model model ) { 然后,我输入的任何与任何其他特定控制器都不匹配的URL将由此控制器处理(因此我希望404所有页面都只显示此页面)。 这是预期的行为吗? 我没想到这一点,并且由于RequestMapping值默认为空并且是一个antMatcher,我不会认为它会处理所有其他URL。 我有这个控制器没有定义RequestMapping的原因是因为我想要一个SimpleUrlMappingHandler定义一些明确的URL到那个控制器,如果我没有包含@Controller和@RequestMapping注释到那个控制器那么我得到一个关于无法找到处理程序方法的错误(可能问题是我误解了该实现细节)。 我的自定义控制器应该处理所有URL吗? 如果是这样,有什么我可以做的,所以它不会被只调用我定义的显式SimpleUrlMappingHandler吗?