GWT vs Spring:如果我更改页面,applicationContext为null

时间:2014-02-03 03:30:58

标签: java javascript spring gwt gwt-rpc

我从一位离开的开发人员继承了一个项目,我正在尝试理解GWT和Spring Framework。

引导我走向这条道路的原始问题:GWT有一个模块,我加载了所有第三方javascripts ......这可能会导致冲突。例如,我将在一个页面中包含图表绘制库等。 可能的解决方案:将图表绘制库放在iframe中,这样它就不会与javascript的其他第三方库发生冲突......或者在新窗口中打开页面。

我决定换个新窗口。

所以我这样做了:

Window.Location.assign(GWT.getHostPageBaseURL()
            + "chartModule.html?gwt.codesvr=127.0.0.1:9997/");

但是,在我的新chartModule.java(GWT)中,我遇到的问题是我没有在(Spring框架)applicationContext.xml中定义的bean / class:

@Autowired
ApplicationContext applicationContext;

在我更改主页url后,applicationContext为null ...所以我没有尝试自动装配的bean ...

是否可以从applicationContext.xml重新加载bean?

这是我的applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <!-- Activates various annotations to be detected in bean classes -->
    <context:annotation-config />

    <!--  This file has properties that are used by other XML files loaded via ${var name} syntax -->
    <context:property-placeholder location="/WEB-INF/classes/environment.properties" />

    <import resource="spring-security-cas.xml" />

    <!-- Scans the classpath for annotated components that will be auto-registered 
        as Spring beans. For example @Controller and @Service. Make sure to set the 
        correct base-package -->
    <context:component-scan base-package="com.javamango.sixtydegrees" />
    <import resource="mongo-config.xml" />
    <import resource="rabbitmq-context.xml" />
    <import resource="spring-mail.xml" />
</beans>

1 个答案:

答案 0 :(得分:1)

您不能在客户端使用spring bean。如果你想从gwt中的spring回顾一些数据,你可以通过两种方式来做到这一点:

1)使用像gwt-sl这样的服务器端库在gwt servlet中注入spring bean

@Service("greetingService")
public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService
{
    @SuppressWarnings("unused")
    private static final Logger LOGGER = LoggerFactory.getLogger(GreetingServiceImpl.class);

    @Autowired
    UserFileService userFileService;

    @Autowired
    UserService userService;
}

现在你可以通过gwt-rpc

自动装配spring bean并获取数据

2)通过jsp将数据放入隐藏的html表单字段中并从中回顾数据

<input type="hidden" value="7" id="documentid"/>

String id = (InputElement) (Element) DOM.getElementById("documentid").value