Tag: spring mvc

Java 8 Jacksonvalidation

我有一个springbootrest服务。 用户传入一个json对象,该对象被反序列化到这个java pojo中: public final class Request { private String id; private double code; private String name; public String getId() { return id; } public double getCode() { return code; } public String getName() { return name; } } 所以用户需要传入以下json: { “id”: “123457896”, “code”: “Foo”, “name”: “test” } 我想让所有这些领域都需要。 提供更少或更多的东西会引发exception。 有没有办法告诉jackson在反序列化时validation输入? 我试过@JsonProperty(required=true)但这不起作用; 显然从这里和这里看来, JsonProperty注释似乎没有得到尊重。 我有我在控制器中调用的validation器: […]

使用Spring Data REST处理自定义exception(i18n)

我正在使用Spring Boot 1.5.4与Spring JPA,Spring Data REST,HATEOAS ……我正在寻找最佳实践(Spring方式)来定制exceptionSpring Data REST正在管理添加i18n支持。 我查看了类MessageException( https://github.com/spring-projects/spring-data-rest/blob/master/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest /webmvc/support/ExceptionMessage.java )作为起点。 典型的Spring Data RESTexception非常好: { “timestamp”: “2017-06-24T16:08:54.107+0000”, “status”: 500, “error”: “Internal Server Error”, “exception”: “org.springframework.dao.InvalidDataAccessApiUsageException”, “message”: “org.hibernate.TransientPropertyValueException: Not-null property references a transient value – transient instance must be saved beforeQuery current operation : com.test.server.model.workflows.WorkSession.checkPoint -> com.test.server.model.checkpoints.CheckPoint; nested exception is java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: Not-null property […]

Bean属性不可读或具有无效的getter方法

所以,我有一个任务是为注册表路由编写一个简单的Web应用程序。 使用Spring MVC。 所以我有class级“路线”,我想保持起点,终点和中间点列表。 但我不明白,如何将值从jsp列入列表(例如使用jstl)。 所以我决定解析一个字符串。 public class Route { private String start; private String finish; private String form; private List list; public Route() { } public Route(String start, String finish, String route) { this.start = start; this.finish = finish; this.form = route; this.toList(); } public Route(String start, String finish) { this.start = start; this.finish […]

apache POI – 获取生成的excel文件的大小

我正在使用Apache POI在我的spring mvc应用程序中生成excel文件。 这是我的春季行动: @RequestMapping(value = “/excel”, method = RequestMethod.POST) public void companyExcelExport(@RequestParam String filter, @RequestParam String colNames, HttpServletResponse response) throws IOException{ XSSFWorkbook workbook = new XSSFWorkbook(); //code for generate excel file //…. response.setContentType(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”); response.setHeader(“Content-Disposition”, “attachment; filename=test.xlsx”); workbook.write(response.getOutputStream()); response.setHeader(“Content-Length”, “” + /* How can i access workbook size here*/); } 我使用XSSFWorkbook是因为我需要生成Excel 2007格式。 但我的问题是XSSFWorkbook没有getBytes或getSize方法。 如何计算生成的xlsx文件的大小? 编辑:我在这里使用ByteArrayOutputStream […]

在Spring 3中使用带有注释类的PropertyOverrideConfigurer

编辑 :这里有一些解释为什么被接受的答案对我有用,可能对其他人来说可能是个问题。 在我的foo-app-servlet.xml中,我有这一行: 当我之前使用spring2时,我的所有服务bean都来自applicationContext.xml,但现在它们直接被引入foo-app-servlet.xml。 在我的项目中,servlet有自己的一组覆盖,因此我需要覆盖servlet覆盖文件而不是applicationContext覆盖文件。 覆盖时,如果你没有命名你的组件,那么它确实使用它的小写版本,所以要覆盖OrderService.foo,你这样做: orderService.foo=bar 结束编辑 我正在开发一个从spring 2.5升级到spring 3的项目,因此同时具有xml和基于注释的配置。 我们以前使用PropertyOverrideConfigurer来更改不同环境中的属性,以取得巨大成功。 我现在正在研究使用authorize.net的代码,我需要确保不从开发环境向他们发送任何内容。 为了实现这一点,我想用PropertyOverrideConfigurer覆盖我的’testMode’属性。 这适用于通过xml配置的bean,但我无法弄清楚如何使用注释配置的类来完成它。 这是我在applicationContext.xml中的覆盖片段: 这是具有我想要覆盖的属性的类: @Component public class OrderService { private static Log logger = LogFactory.getLog(OrderService.class); @Autowired @Qualifier(“OrderDAO”) private OrderDAO orderDao; @Autowired private SiteManager siteManager; String authorizenetProperties = “classpath:authorizenet.properties”; private Boolean testMode = false; public Boolean getTestMode() { return testMode; } public void […]

弹出下载文件控制器中的重定向error handling

这个问题很好地解释了如何在spring编写下载文件控制器。 这个问题很好地解释了使用response.sendRedirect()无法发送Post请求 我希望将用户重定向到同一页面,并显示导致文件下载错误的错误。 这是工作流程 用户点击www.abc.com/index [控制器已映射/index.jsp并返回ModelAndView] 在此页面,我们有一个文件下载,其URL为www.abc.com/download?resource_id=123。 [控制器有映射/下载并返回void] 当文件下载出错时,应将用户重定向到www.abc.com/index并显示一些错误。 当文件下载没有错误时,用户将停留在同一页面,并出现文件下载对话框。 以下是转发代码段: @RequestMapping(/download) public void execute(@RequestParam(value = “resource_id” required = true) final String resource, final HttpServletRequest request, final HttpServletResponse response) { try { //some processing } catch { RequestDispatcher dispatcher = request.getRequestDispatcher(“/index” + “?is_downloaded=false”); dispatcher.forward(request, response) } } @RequestMapping(/index) public void execute(@RequestParam(value = “is_downloaded” required = […]

如何在AuthenticationSuccessHandler中检索会话范围的bean?

我有一个自定义AuthenticationSuccessHandler。 我想要做的是在onAuthenticationSuccess方法中设置一些会话数据。 要存储会话数据,我想使用会话范围的bean,它可以在任何控制器中正常工作。 但是如果我尝试在onAuthenticationSuccess方法中检索它,我会得到一个例外: 创建名为’scopedTarget.sessionData’的bean时出错:当前线程的作用域’session’无效; 我的代码是: WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); SessionData sessionData = context.getBean(SessionData.class); 有任何想法吗?

即使在日志中看到“添加事务方法”,方法也不被事务顾问拦截

我有一个@Transactional @Controller ,但它的方法是由Spring MVC框架调用的,没有事务。 在exception跟踪中,我找不到拦截调用的事务顾问: org.hibernate.HibernateException: No Session found for current thread org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106) org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) org.example.businesslogic.MyController.userLoggedIn(SwiperRest.java:48) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:483) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 另一方面,日志清楚地表明控制器方法被检测为事务性: DEBUG osbfsDefaultListableBeanFactory – Returning cached instance of singleton bean ‘org.springframework.transaction.config.internalTransactionAdvisor’ DEBUG osbfsDefaultListableBeanFactory – Returning cached instance of singleton bean ‘metaDataSourceAdvisor’ DEBUG ostaAnnotationTransactionAttributeSource – Adding transactional method ‘MyController.userLoggedIn’ […]

以编程方式调用@Controller

我正在转换使用Spring MVC的Controller实现的代码来使用注释构造型@Controller。 除了一个问题,一切都很顺利: 给定请求/响应,如何以编程方式处理基于注释的控制器的请求? 以前,(无论实施如何)我都能打电话: controller.handleRequest(request, response) 与注释相同的是什么? 我曾经假设会有一些(可能是静态的)实用程序类: SpringAnnotationBasedControllerUtils.handleRequest( handlerObject, HttpServletRequest request, HttpServletResponse response); 处理将请求映射到@Controller构造型允许的动态签名的细节,但我找不到这样的东西。 有什么建议么? (请不要评论为什么这是一个坏主意,或者对于“好”设计应该是不必要的等等。这是维护中的代码,必须尽可能无创,因此目前不能完全重写。 ) 谢谢!

Spring MVC中的数据表

在进行数据绑定时,在JSF中我们有数据表function,用于在带有样式的表中排列数据。 在Spring MVC中是否有像datatable这样的function? 我通常使用JSTL forEach来做。 但是如果有像datatable这样的function(在JSF中),我们可以轻松地管理它,包括它们的CSS风格。