- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个我一直在使用的 Vaadin 7 应用程序,但现在需要集成 JAAS 并最终集成 OpenAM 以进行身份验证和授权。我注意到很多人都在使用 Spring 来让它工作,所以我选择了那条路。我使用了 VaadinSpringIntegration 插件,我认为它设置正确,但是当我启动我的应用程序时,我的 Autowiring bean 为空。我以前从未使用过 Spring,所以很可能我忽略了一些东西。
所以这是我的 web.xml 的一部分
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Hoplite Tool</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>Hoplite</servlet-name>
<servlet-class>org.hoplite.servlet.HopliteServlet</servlet-class>
<init-param>
<param-name>UI</param-name>
<param-value>org.hoplite.dashboard.DashboardUI</param-value>
</init-param>
<init-param>
<param-name>widgetset</param-name>
<param-value>org.hoplite.dashboard.DashboardWidgetSet</param-value>
</init-param>
<init-param>
<param-name>UIProvider</param-name>
<param-value>org.hoplite.dashboard.DashboardUIProvider</param-value>
</init-param>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>BAT3</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
这是我的 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:lang="http://www.springframework.org/schema/lang"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/lang
http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
<context:component-scan base-package="org.hoplite.dashboard" />
</beans>
我必须为 webapp 添加一些 javascript,所以我扩展了 SpringVaadinServlet
public class HopliteServlet extends SpringVaadinServlet {
/**
* Attempt to load extra javascript
*
* @throws ServletException
*/
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
getService().addSessionInitListener(new SessionInitListener() {
@Override
public void sessionInit(SessionInitEvent event) throws ServiceException {
event.getSession().addBootstrapListener(new BootstrapListener() {
@Override
public void modifyBootstrapPage(BootstrapPageResponse response) {
response.getDocument().head().appendElement("script").attr("type", "text/javascript").attr("src", "https://www.google.com/jsapi");
}
@Override
public void modifyBootstrapFragment(BootstrapFragmentResponse response) {
}
});
}
});
}
}
最后我的 UI 类有一个 Autowired bean(抱歉那个类很长所以我只能提供一个片段)
@Push(PushMode.MANUAL)
@Theme("dashboard")
@Title("Hoplite Tool")
@Component
@Scope("prototype")
public class DashboardUI extends UI {
@Autowired
private LoginBean loginBean;
...
//add listener to button
signin.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
String name = loginBean.performLogin(username.getValue().toString(), password.getValue().toString());
buildMainView();
}
}
这是 loginBean 类
@Component
@Scope("prototype")
public class LoginBean {
@Autowired
private HttpServletRequest request;
/**
* Logs the user in with given username and password.
*
* @param username
* @param password
* @return principal name if login is successful
* @throws ServletException if login fails
*/
public String performLogin(String username, String password) throws ServletException {
// If login fails, we throw exception. Otherwise return the principal
// name of logged in user.
request.login(username, password);
return request.getUserPrincipal().getName();
}
/**
* Logs out the current user.
*
* @throws ServletException if logout fails
*/
public void performLogout() throws ServletException {
request.logout();
}
}
我的 bean 类和 UI 类在 org.hoplite.dashboard 中
但是,每次我获得主 UI 时,loginBean 都是空的...有人可以帮我解决这个问题吗?
最佳答案
我一次带他们 1 个:
1) 除非另有说明,SpringVaadinServlet将使用 SpringUIProvider从上下文中检索 bean。如果您确实需要覆盖默认值,请确保 DashboardUIProvider 正在从 spring 应用程序上下文中检索 UI 实例,以便“自动魔术”发生:
<init-param>
<param-name>UIProvider</param-name>
<param-value>org.hoplite.dashboard.DashboardUIProvider</param-value>
</init-param>
2) 如果您放弃 DashboardUIProvider,请注意默认的 SpringUIProvider 需要一个 beanName
参数而不是 UI
所以改变:
<init-param>
<param-name>UI</param-name>
<param-value>org.hoplite.dashboard.DashboardUI</param-value>
</init-param>
到
<init-param>
<param-name>beanName</param-name>
<param-value>dashboardUI</param-value>
</init-param>
其中 dashboardUI
是 spring 将用于您的 UI 的隐式名称。如果您更改它,请确保使用新的更新您的 web.xml
关于java - Vaadin 7 + Spring + VaadinSpringIntegration 附加组件 - Autowired bean 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22564895/
我有一个示例应用程序,包含以下三个步骤 输入用户详细信息 -> 个人详细信息 -> 完成 当我点击一个链接时,它会调用我的 vaadin 应用程序。问题是一旦我的三步过程完成,当我再次尝试点击我的 v
我希望框架捕获每个未捕获的异常并显示适当的通知消息。 因此我在我的 UI 中设置了一个自定义的 ErrorHandler(灵感来自“Book of Vaadin”:https://vaadin.com
我在 Vaadin 有一张 table 。一列是 String 类型,因此其大小是可变的。因此,我想让列的宽度固定(具有扩展比率),但每行的高度应该是可变的(根据其内容 - 字符串)。 即,这是预期的
有谁知道用于 vaadin 框架的数据可视化(图表、饼图等)的任何 UI 组件库? 最佳答案 我建议 dChart: https://vaadin.com/directory#!addon/dchar
我在 Grid 中使用 BeanItemContainer 来显示我的数据。我需要根据单元格中的数据分别为每个单元格着色。 最佳答案 section about the Grid在 Vaadin 的书
在我的一个应用程序中,我创建了一个页脚: public Footer(){ hl.setHeight("120px"); hl.setWidth("100%");
是否有任何特定方法可以在 Vaadin 表中实现分页/延迟加载。 我试图找到一些文档,但我找不到。 最佳答案 使用Viritin add-on及其 MTable 组件。 I 是最有效的(服务器资源副)
我正在尝试使用 Vaadin Charts 创建饼图。 这段代码为图表添加了漂亮的标签,但小数点 t 后两位数字就足够了。 dataLabels.setFormatter("''+ this.poi
我是 vaadin 框架的新手,一切正常,直到......表头没有正确显示,......我正在开发一个在 exoplatform 上运行的 portlet,我正在使用 vaadin 6,我的表只显示第
我有一个带有基于复杂查询填充数据的表的页面(即使我使用分页也需要很多时间)。我使用 BeanItemcontainer 将数据加载到表中。现在遇到问题,我希望以异步方式将数据加载到表中(在用户屏幕上加
我有一个现有的应用程序(在 WebGuiToolkit.org 中编写),我正在尝试在其中嵌入一个 Vaadin 14 页面。 我看过几个 Vaadin 8 指南,比如 https://vaadin.
更改pom.xml文件的vaadin版本号和vaadin插件版本号后构建失败 7.4.5 7.4.5 然后我尝试清理并重建项目,但显示构建失败: Copying 3 resources --- va
我想通过更改文件列表中元素的外观来设置 Vaadin Upload 组件 (vaadin-upload) 的样式,例如隐藏命令按钮(开始、删除、重试)。文件列表包含 vaadin-upload-fil
如何向文本字段、选项卡、链接、标签等添加悬停文本(即当我将鼠标悬停在组件上时出现的包含一些解释或详细信息的文本框) 我用谷歌搜索并浏览了“Book of Vaadin”和“Building Moder
this.grid.asSingleSelect().addValueChangeListener(event -> { if (!Objects.isNull(event.getVa
在 Vaadin 中,一旦您有了 TabSheet,并且已经打开了一些选项卡,您就不会希望多次打开包含相同内容的同一个 Tab。 如何检查选项卡是否已打开并将其设置为选定的选项卡? 最佳答案 默认情况
我已经使用 vaadin 创建了表格。现在我想为该表格中的特定列内容设置字体大小。是否可以为该表格中的特定列设置字体大小?。 如果是这样,请给我设置字体大小的想法。如果你能提供我一些代码片段。 最佳答
是否可以在 vaadin 中以百分比设置表格的列宽。如果可以,请告诉我如何使用示例代码片段来做到这一点。提前谢谢。 最佳答案 是的。为此使用 Table.setColumnExpandRatio(co
我正在开发 Vaadin 8 UI。目前,每次修改 UI 时,我都必须重新启动我的应用程序。 有没有更好的办法?我曾尝试附加 Java 调试器并使用 IntelliJ 的 Reload Changed
序言:我是Vaadin的高级开发人员(我用过6、7,现在我的所有项目都已迁移到Vaadin 8)。 我开始学习Vaadin 10/Flow,但发现自己在一些热水中。 我实际上在挣扎的是“项目”本身。
我是一名优秀的程序员,十分优秀!