标签: spring-3

根据spring security 3.1中的角色确定目标URL

在spring security 3.0中,我们正在使用AuthenticationProcessingFilter类,我们使用的determineTargetUrl()方法是根据不同的角色返回url.

现在,我们正在转向spring security 3.1.0.RC3,我现在应该如何确定基于不同角色的url,因为AuthenticationProcessingFilter类已从新版本中删除.任何人都可以请给我一些简短的代码,以便我可以实现自定义过滤器重定向到不同角色的不同页面.

spring spring-security spring-3

10
推荐指数
1
解决办法
7149
查看次数

java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getResourceLoader()Lorg/springframework/core/io/ResourceLoader

I am working on a Spring application on Tomcat7, JDK1.7, Maven and other components. Recently, I made a major change to the application, requiring switching over to Spring 3. After the change, I'm seeing the below exception on deploying to dev server. The application runs flawlessly on my local system though.

javax.servlet.ServletException: Servlet.init() for servlet amadeusAce threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    java.lang.Thread.run(Thread.java:722)
root cause

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/amadeusAce-servlet.xml]; …
Run Code Online (Sandbox Code Playgroud)

pom.xml maven xml-configuration tomcat7 spring-3

10
推荐指数
1
解决办法
3万
查看次数

如何使用Spring 3的SessionLocaleResolver在JSP中获取访问者的语言环境

我需要在JSP页面中获取访问者的语言环境,以便我可以正确显示包含语言列表的下拉菜单,并根据其当前语言环境选择所选语言.通常我可能会做类似的事情${pageContext.request.locale}.

我认为问题是,只会根据用户的请求标题(浏览器发送的内容)给出区域设置.但是用户可能已经改变了他们的语言/语言环境,所以我需要使用Spring的机制来查看会话:

RequestContextUtils.getLocale(request).toString();
Run Code Online (Sandbox Code Playgroud)

但是,在JSP页面中访问它并使JSP代码可以使用它并不容易.

或者是否有另一种更简单的机制向用户显示语言下拉菜单?Spring是否将当前语言环境存储在可从JSP轻松访问的对象中?

spring jsp spring-mvc java-ee spring-3

9
推荐指数
2
解决办法
9328
查看次数

Spring 3 MVC - 将前缀映射到单个bean的请求参数

我有以下GET请求:

/api/search?filter.operation=Ping&filter.namespace=

请注意,参数名称包括前缀(filter.操作,filter.命名空间).

然后,我有以下我想用来接收这些参数的bean:

class MessageSearchFilter {
    String operation;
    String namespace;
    ...
}
Run Code Online (Sandbox Code Playgroud)

处理程序方法具有以下签名:

public @ResponseBody String searchMessages(MessageSearchFilter filter, ...);

但是这不起作用,因为Spring MVC期望"操作"和"命名空间"属性的命名完全相同.如果我将请求更改为使用'operation'和'namespace'(没有'filter.'前缀),它就可以工作.

有什么方法可以告诉Spring期望参数以'filter'为前缀?

与此相关的一个问题是,如果我的方法签名包含多个具有冲突属性名称的表单对象,会发生什么?

spring spring-mvc spring-3

9
推荐指数
1
解决办法
1811
查看次数

GWT开发模式+ Spring 3.1 + Hibernate 4.0.1中的异常

我有一个GWT + Hibernate + JPA + Spring配置文件,可以使用Spring 3.0.x + Hibernate 3.6.x. 当我升级到Spring 3.1和Hibernate 4.0时,抛出以下异常:

与Hibernate 4和Spring 3.1有任何已知的不兼容性吗?

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/application-context.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: myPu] Unable to build EntityManagerFactory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
    at …

gwt spring jpa-2.0 spring-3 hibernate-4.x

9
推荐指数
1
解决办法
6307
查看次数

了解基本的Spring Framework和Total Flow

我是Spring Framework的新手.请指导我对Spring的基本了解.我了解Java和JSF,但我对Struts或其他框架一无所知.我已经搜索了互联网,并且能够下载PDF,但我不理解Spring流程,就像我理解JSF流程一样.请提供一些链接,以便了解Spring的流程.

spring springsource spring-3 spring2.x

9
推荐指数
2
解决办法
3万
查看次数

Spring 3 - 在JSP中访问Model值

我有一个JSP,我试图从我的模型中打印出值,但没有出现在我引用这些值的地方.这是我设置值的控制器方法.

@RequestMapping(value = "/poll1", method = RequestMethod.POST)
public String processPoll1(@RequestParam String vote,
        HttpServletResponse response, Model model) {
    Map<String, Object> resultMap = poll1DAO.tallyVote(vote);
    Cookie poll1 = new Cookie("poll1", "voted");
    model.addAttribute("poll1Yes", resultMap.get("yes").toString());
    model.addAttribute("poll1No", resultMap.get("no").toString());
    poll1.setMaxAge(maxSeconds);
    response.addCookie(poll1);
    return "redirect:/polls";
}
Run Code Online (Sandbox Code Playgroud)

这是JSP中引用Model属性的部分.

<table>
    <tr>
        <td><b><i>Poll #1 -- </i></b>Would you like to have a 30-year reunion in 2016?<br></td>
    </tr>
    <tr>
        <td><b>Yes</b></td>
        <td>&nbsp;&ndash;&nbsp;<c:out value='${model.poll1Yes}' /><br /></td>
    </tr>
    <tr>
        <td><b>No</b></td>
        <td>&nbsp;&ndash;&nbsp;<c:out value='${model.poll1No}' /><br />
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

这是我的输出.不是实际值,而是在属性的位置打印出任何内容.

Poll #1 -- Would you like to have a …
Run Code Online (Sandbox Code Playgroud)

jsp jstl spring-3 modelattribute

9
推荐指数
1
解决办法
2万
查看次数

如何使用Spring MVC配置特定于控制器的字段格式化程序?

我的应用程序中有一个名为Foo的数据类型,如下所示:

public class Foo {
  // synthetic primary key
  private long id; 

  // unique business key
  private String businessKey;

  ...
}
Run Code Online (Sandbox Code Playgroud)

此类型在整个Web应用程序中以多种形式使用,通常您希望使用该id属性来回转换它,因此我实现了Spring3 Formatter,并使用全局Spring转换服务注册该格式化程序.

但是,我有一个表单用例,我想用转换来转换businessKey.实现Formatter很容易实现,但是我怎么告诉Spring只为这个特定的表单使用该格式化程序呢?

我在http://static.springsource.org/spring/previews/ui-format.html上找到了一个文档,其中有一节关于注册特定于字段的格式化程序(在底部一直见5.6.6),它提供了这个示例:

@Controller
public class MyController {
  @InitBinder
  public void initBinder(WebDataBinder binder) {
    binder.registerFormatter("myFieldName", new MyCustomFieldFormatter());
  }        
  ...
}
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,但是这是2009年的预览文档,它看起来并不像registerFormatter最终发布的API那样.

你怎么这么做的?

java spring spring-mvc spring-3

9
推荐指数
1
解决办法
1136
查看次数

发生异常时不会调用ResponseEntityExceptionHandler

我是新来的春天.我正在使用spring webmvc开发REST api.对于错误处理我得到了这个链接http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-rest-spring-mvc-exceptions

我试图在我的项目中使用ResponseEntityExceptionHandler.但是每当我的控制器抛出异常时,它就永远不会到达这个ResponseEntityExceptionHandler.

以下是我的代码段

调节器

@Controller
@RequestMapping("/hello")
public class HelloController {  
    private static final Logger logger = Logger.getLogger(HelloController.class);
    @RequestMapping(value="/{name}", method=RequestMethod.GET)
    public @ResponseBody String greet(@PathVariable(value = "name")String name ) throws InvalidInputException, ResourceNotFoundException{
        logger.info("start greet() "+name );
        System.out.println("start greet() "+name);
        String message = null;
        if("".equalsIgnoreCase(name))
        {
            throw new InvalidInputException("Invalid Input");
        }
        List<String> names = new ArrayList<String>();
        names.add("Harshal");
        names.add("Smitesh");
        if(names.contains(name)){
            message = "Hello "+ name;
        }else{
            throw new ResourceNotFoundException("Requested Resource not found");
        }
        System.out.println("end greet");
        logger.info("end greet()");
        return message;
    }
} …
Run Code Online (Sandbox Code Playgroud)

error-handling spring-mvc spring-security spring-3

9
推荐指数
1
解决办法
1万
查看次数

如何更新/删除已在项集合中缓存的项目

我正在使用Spring和EhCache

我有以下方法

@Override
@Cacheable(value="products", key="#root.target.PRODUCTS")
public Set<Product> findAll() {
    return new LinkedHashSet<>(this.productRepository.findAll());
}
Run Code Online (Sandbox Code Playgroud)

我有其他使用@Cacheable和@CachePut以及@CacheEvict的方法.

现在,假设数据库返回100个产品并且它们被缓存key="#root.target.PRODUCTS",然后其他方法将插入 - 更新 - 删除项目到数据库中.因此,通过它缓存的产品key="#root.target.PRODUCTS"不再相同,例如数据库.

我的意思是,检查以下两种方法,他们能够更新/删除一个项目,同一项目缓存在另一个key="#root.target.PRODUCTS"

@Override
@CachePut(value="products", key="#product.id")
public Product update(Product product) {
    return this.productRepository.save(product);
}

@Override
@CacheEvict(value="products", key="#id")
public void delete(Integer id) {
    this.productRepository.delete(id);
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以通过更新/删除位于缓存中的项目key="#root.target.PRODUCTS",如果产品已更新,则为100,如果删除了产品,则为499.

我的观点是,我想避免以下情况:

@Override
@CachePut(value="products", key="#product.id")
@CacheEvict(value="products", key="#root.target.PRODUCTS")
public Product update(Product product) {
    return this.productRepository.save(product);
}

@Override
@Caching(evict={
        @CacheEvict(value="products", key="#id"),
        @CacheEvict(value="products", key="#root.target.PRODUCTS")
})
public void delete(Integer id) {
    this.productRepository.delete(id); …
Run Code Online (Sandbox Code Playgroud)

spring caching ehcache spring-3 spring-cache

9
推荐指数
2
解决办法
2万
查看次数