Questions tagged «spring-mvc»

基于模型-视图-控制器(MVC)模式构建Java Web应用程序的框架。它促进了与基础视图技术的灵活解耦的代码。


4
场注入到底是什么?如何避免?
我在有关Spring MVC和Portlet的一些帖子中读到,不建议使用字段注入。据我了解,字段注入是当您使用以下方式注入Bean时@Autowired: @Component public class MyComponent { @Autowired private Cart cart; } 在研究期间,我还阅读了有关构造函数注入的信息: @Component public class MyComponent { private final Cart cart; @Autowired public MyComponent(Cart cart){ this.cart = cart; } } 这两种类型的注射都有哪些优缺点? 编辑1:由于此问题被标记为该问题的重复,我检查了它。因为在问题和答案中都没有任何代码示例,所以我不确定我所使用的注入类型是否正确。

4
Spring MVC类型转换:PropertyEditor还是Converter?
我正在寻找在Spring MVC中绑定和转换数据的最简单方法。如果可能,不进行任何xml配置。 到目前为止,我一直在像这样使用PropertyEditors: public class CategoryEditor extends PropertyEditorSupport { // Converts a String to a Category (when submitting form) @Override public void setAsText(String text) { Category c = new Category(text); this.setValue(c); } // Converts a Category to a String (when displaying form) @Override public String getAsText() { Category c = …

16
谁在S​​pring MVC中设置响应内容类型(@ResponseBody)
我在注释驱动的Spring MVC Java Web应用程序中运行在Jetty Web服务器上运行(当前在Maven Jetty插件中)。 我正在尝试使用一种仅返回String帮助文本的控制器方法来提供一些AJAX支持。资源采用UTF-8编码,字符串也采用UTF-8编码,但是我来自服务器的回复是 content-encoding: text/plain;charset=ISO-8859-1 即使我的浏览器发送 Accept-Charset windows-1250,utf-8;q=0.7,*;q=0.7 我正在以某种方式使用spring的默认配置 我发现了将这个bean添加到配置中的提示,但是我认为它没有被使用,因为它说它不支持编码,而是使用默认编码。 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" /> </bean> 我的控制器代码是(请注意,这种响应类型的更改对我不起作用): @RequestMapping(value = "ajax/gethelp") public @ResponseBody String handleGetHelp(Locale loc, String code, HttpServletResponse response) { log.debug("Getting help for code: " + code); response.setContentType("text/plain;charset=UTF-8"); String help = messageSource.getMessage(code, null, loc); log.debug("Help …

7
绑定@RequestParam中的列表
我以这种方式从表单发送一些参数: myparam[0] : 'myValue1' myparam[1] : 'myValue2' myparam[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' ... 我知道我可以通过添加类似的参数来获取控制器方法中的所有参数 public String controllerMethod(@RequestParam Map<String, String> params){ .... } 我想将参数myParam [](而不是其他参数)绑定到列表或数组(任何保持索引顺序的东西),因此我尝试使用以下语法: public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){ .... } 和 public String controllerMethod(@RequestParam(value="myParam") String[] myParams){ .... } 但它们都没有绑定myParam。即使将值添加到地图,它也无法绑定参数: public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){ …

8
春天mvc @PathVariable
您能给我一个简短的解释和@PathVariable在Spring MVC 中使用的示例吗?请附上您输入网址的方式? 我正在努力获取正确的URL以显示jsp页面。谢谢。
125 spring-mvc 

5
如何在对Spring MVC Controller的GET请求中接受Date参数?
我有一个GET请求,该请求以YYYY-MM-DD格式发送日期到Spring Controller。控制器代码如下: @RequestMapping(value="/fetch" , method=RequestMethod.GET) public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) { //Content goes here } 当我正在检查Firebug时,请求已正确发送。我得到错误: HTTP状态400:客户端发送的请求在语法上不正确。 如何使控制器接受这种日期格式?请帮忙。我究竟做错了什么?
122 java  spring  date  spring-mvc 

7
Spring MVC的DelegatingFilterProxy有什么意义?
我在Spring MVC应用程序的中看到了这一点web.xml: <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> 我试图弄清楚为什么它存在以及是否真正需要它。 我在Spring文档中找到了这种解释,但并不能帮助我理解它: 似乎表明该组件是web.xmlSpring中定义的servlet 和Spring中定义的组件之间的“胶水” applicationContext.xml。 7.1 DelegatingFilterProxy 使用servlet过滤器时,显然需要在中声明它们web.xml,否则servlet容器将忽略它们。在Spring Security中,过滤器类也是在应用程序上下文中定义的Spring Bean,因此能够利用Spring丰富的依赖项注入工具和生命周期接口。Spring DelegatingFilterProxy提供了web.xml与应用程序上下文之间的链接。 使用DelegatingFilterProxy时,您将在web.xml文件中看到以下内容: <filter> <filter-name>myFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 请注意,过滤器实际上是一个DelegatingFilterProxy,而不是将实际实现过滤器逻辑的类。什么DelegatingFilterProxy确实是通过向其从Spring应用程序上下文中的bean代理Filter的方法。这使bean可以从Spring Web应用程序上下文生命周期支持和配置灵活性中受益。Bean必须实现javax.servlet.Filter,并且必须与filter-name元素中的名称相同。阅读Javadoc for DelegatingFilterProxy了解更多信息 因此,如果我从中删除此文件web.xml,将会发生什么?我的servlet无法与Spring容器通信?**

5
是否有可能使用defaultValue的空RequestParam值?
如果我有一个类似于以下内容的请求映射: @RequestMapping(value = "/test", method = RequestMethod.POST) @ResponseBody public void test(@RequestParam(value = "i", defaultValue = "10") int i) { } 然后使用以下命令调用此请求: http://example.com/test?i= 我收到错误消息 无法将'java.lang.String'类型的值转换为'int'类型;嵌套的异常是java.lang.NumberFormatException:对于输入字符串:“” 我可以通过停止javascript客户端发送空参数或接受字符串值并仅在未发现空白的情况下进行解析来解决此问题。 更新:春季的更高版本现在实现了最初想要的行为。 我刚刚在春季4.3.5中对此进行了测试,发现该行为实际上实际上会将null值转换为默认值而不会引发NumberFormatException,因此;我原来的映射现在可以正常工作了。 我不确定此行为更改是在Spring的哪个版本上进行的。
120 java  spring  spring-mvc 

9
从Spring MVC中的控制器操作重定向到外部URL
我注意到以下代码将用户重定向到项目内的URL, @RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; } 但是,以下内容已按预期正确重定向,但需要http://或https:// @RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; } 我希望重定向始终重定向到指定的URL,无论它是否具有有效协议,并且都不想重定向到视图。我怎样才能做到这一点? 谢谢,
118 java  spring  jsp  spring-mvc 

9
如何使用Spring管理REST API版本管理?
我一直在搜索如何使用Spring 3.2.x管理REST API版本,但没有找到易于维护的任何东西。我将首先解释我所遇到的问题,然后是一个解决方案...但是我确实想知道我是否在这里重新发明轮子。 我想基于Accept标头来管理版本,例如,如果请求具有Accept标头application/vnd.company.app-1.1+json,我希望spring MVC将其转发到处理该版本的方法。而且由于并非同一版本中的API中的所有方法都发生了变化,所以我不想转到每个控制器并为在版本之间未发生变化的处理程序进行任何更改。我也不想逻辑确定在控制器本身中使用哪个版本(使用服务定位器),因为Spring已经发现了要调用的方法。 因此,采用1.0版至1.8版的API,其中在1.0版中引入了处理程序,并在v1.7版中对其进行了修改,我想通过以下方式进行处理。假设代码在控制器内部,并且有一些代码能够从标头中提取版本。(以下在Spring中无效) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; } @RequestMapping(...) //same Request mapping annotation @VersionRange(1.7) @ResponseBody public Object method2() { // so something return object; } 在Spring中这是不可能的,因为这两种方法具有相同的RequestMapping注释,并且Spring无法加载。这个想法是VersionRange注释可以定义一个打开或关闭的版本范围。第一种方法从1.0到1.6版本有效,而第二种方法从1.7版开始(包括最新版本1.8)有效。我知道,如果有人决定通过99.99版,这种方法就会失败,但是我可以接受。 现在,由于没有认真修改spring的工作原理就不可能实现上述目的,因此我想到了修改处理程序与请求匹配的方式,特别是编写自己的ProducesRequestCondition,并在其中拥有版本范围。例如 码: @RequestMapping(..., produces = "application/vnd.company.app-[1.0-1.6]+json) @ResponseBody public Object method1() { // so …

18
如何在Spring Boot中设置基本URL以进行休息?
我正在尝试混合mvc和在单个spring boot项目中休息。 我想在一个地方设置所有其余控制器(例如example.com/api)的基本路径(我不想用@RequestMapping('api/products'),而只是用注释每个控制器@RequestMapping('/products')。 Mvc控制器应可通过example.com/whatever访问 可能吗? (我不使用spring数据休息,只是spring mvc)

2
春季4与泽西(REST Web Services)
我们计划用spring 4.0.6版本制作一个新应用程序。我们使用可以返回“ XML”或“ JSON”的控制器。在上一个项目中,我们已经使用JAX-RS API成功地将Jersey与Spring实现了REST支持,但是在阅读了前辈的几篇文章和建议后,他们说Spring提供了很好的REST支持。 如果我不使用JAX-RS和Jersey而不使用Spring REST支持,则使我真正感到困惑的一些点是: 在Spring MVC中如何进行封送和拆封? 封送是否需要使用jax-rs进行封送? 如果在春季之前自动处理了编组和拆组,那么它将如何知道xmlRootElements。 如果Spring证明对REST很好的支持,我仍然感到困惑,那为什么人们仍然选择Jersey来支持REST?真正希望了解更多详细信息。 如果我说错了,请忽略它。举例说明确实很有帮助。 提前致谢!!

20
Spring MVC测试中如何避免“圆形视图路径”异常
我的一个控制器中有以下代码: @Controller @RequestMapping("/preference") public class PreferenceController { @RequestMapping(method = RequestMethod.GET, produces = "text/html") public String preference() { return "preference"; } } 我只是想使用Spring MVC测试来测试它,如下所示: @ContextConfiguration @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) public class PreferenceControllerTest { @Autowired private WebApplicationContext ctx; private MockMvc mockMvc; @Before public void setup() { mockMvc = webAppContextSetup(ctx).build(); } @Test public void circularViewPathIssue() …

4
WebMvcConfigurerAdapter类型已弃用
我只是迁移到Spring 5.0.1.RELEASEMVC 版本,但突然在Eclipse STS中将WebMvcConfigurerAdapter标记为已弃用 public class MvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); // to serve static .html pages... registry.addResourceHandler("/static/**").addResourceLocations("/resources/static/"); } .... } 我该如何删除!
116 java  spring  spring-mvc 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.