【发布时间】:2014-11-28 12:33:02
【问题描述】:
我有带有注释@Component 的窗口类实现。在这个类中,我用注释@Autowired 声明对象。
在我的窗口窗体上,我有一个按钮Create,它应该从TextFields 读取数据,创建新对象并将其存储在数据库中。
@Component("newProjectWindow")
public class NewProjectWindow {
private Window createProjectWindow;
@Autowired
private ProjectService service;
public Window createWindow() {
createProjectWindow = new Window("New project");
initWindow();
fillWindow();
return createProjectWindow;
}
private void initWindow() {
createProjectWindow.setSizeUndefined();
createProjectWindow.setResizable(false);
createProjectWindow.setModal(true);
createProjectWindow.addCloseListener(new CloseListener(){
@Override
public void windowClose(CloseEvent e) {
Notification.show("Closed");
}
});
}
private void fillWindow() {
final TextField projectName = new TextField("Project name");
final TextField projectOwner = new TextField("Project owner");
Button create = new Button("Create");
create.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Project newProject = new Project();
newProject.setProjectName(projectName.getValue());
newProject.setProjectOwner(projectOwner.getValue());
//save it somehow
}
});
Button close = new Button("Cancel");
close.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
createProjectWindow.close();
}
});
HorizontalLayout layout = new HorizontalLayout(create, close);
FormLayout formLayout = new FormLayout(projectName, projectOwner, layout);
formLayout.setMargin(true);
createProjectWindow.setContent(formLayout);
}
}
但是问题是如何在数据库中存储对象。我无法访问实例化的ProjectService(它使用ProjectRepisitory,它使用SqlSessionTemplate 等),因为它受Spring 的控制 - 而匿名ClickListener 不是。
但是如何存储对象呢?
【问题讨论】: