我有Vaadin Web应用程序与春季安全集成进行身份验证。 Vaadin servlet的配置非常简单:如何从Vaadin/Spring应用程序提供静态资源?
<servlet>
<servlet-name>Vaadin Application Servlet</servlet-name>
<servlet-class>com.example.SpringApplicationServlet</servlet-class>
<init-param>
<param-name>applicationBean</param-name>
<param-value>mainApplication</param-value>
</init-param>
<init-param>
<param-name>widgetset</param-name>
<param-value>com.example.widgetset.CustomWidgetSet</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Vaadin Application Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
servlet初始化Spring上下文并返回Vaadin应用程序。我也配置了安全性而拥有这样来配置定制登录表单:
<servlet>
<servlet-name>login</servlet-name>
<jsp-file>/jsp/login.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>login_error</servlet-name>
<jsp-file>/jsp/loginError.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>login_error</servlet-name>
<url-pattern>/login_error</url-pattern>
</servlet-mapping>
登录表单样式与外部CSS和也有一些图像。基本上,图像位于/ jsp/img中,而样式表位于/jsp/login.css中。所以WAR结构如下:
- /JSP
- /META-INF
- /VAADIN
- /WEB-INF
无论是图像还是CSS被加载,因为显然所有这些请求都映射到vaadin servlet。我如何定义一些静态资源目录,这些目录不会由Vaadin servlet提供?我已经尝试过春季mvc:资源,但没有奏效。感谢您的帮助。
再见, 菲利普
我已经想通了这一点。虽然这是一种解决方法。我已将Vaadin应用程序Servlet映射到/ app/*而不是/ *(请记住,在这种情况下,您还必须将相同的servlet映射到/ VAADIN/*)。有了这个配置,我可以从我的web应用程序访问jsp目录,一切正常。我已经删除了整个Spring资源配置,因为这只是不起作用。
那么一次,我还是漂亮不漂亮这个解决方案舒适,宁愿让我的资源目录配置其他办法,但客户端是快乐:)。如果任何人有正确的解决方案,我将不胜感激地阅读它。
“SpringApplicationServlet”扩展了哪些类? – 2012-02-15 11:35:46
它扩展了com.vaadin.terminal.gwt.server.AbstractApplicationServlet – 2012-02-15 13:18:25
尝试使用URL映射([Servlet mapping/vs /*](http://stackoverflow.com/a/4140659/267197))或静态映射资源([Servlet for serving static content](http://stackoverflow.com/a/3582215/267197))。 – 2012-02-18 23:22:55