我有Controller-ManagedBeans和Model-ManagedBeans(例如MVC-Pattern)。
这是我的控制器:
@ManagedBean
@RequestScoped
public class ProjectController {
private ProjectData projectBean; //The Model-ManagedBean (see below)!
private IProjectService projectService; //My Service-Layer
public ProjectController(){
init();
}
private void init(){
projectBean = new ProjectData();
projectService = new ProjectService();
}
public String saveProject() {
projectService.addProject(projectBean.getProjectDTO());
return ("");
}
}
...她可以看到我的模型,该模型的价值来自面...
@ManagedBean(name="ProjectData")
@SessionScoped
public class ProjectData {
private ProjectDTO projectDTO;
public ProjectData(){
projectDTO = new ProjectDTO();
}
public ProjectDTO getProjectDTO() {
return projectDTO;
}
public void setProjectDTO(ProjectDTO projectDTO) {
this.projectDTO = projectDTO;
}
public String getTitle() {
return projectDTO.getTitle();
}
public void setTitle(String title) {
projectDTO.setTitle(title);
}
}
我的问题是现在它不起作用。我想我需要注入这两个类之间的依赖关系。但是如何?是否有可以帮助我的JSF-pro。
我想使用注释。
谢谢
BalusC发布后更新
我稍微修改了代码,但仍然无法正常工作。请提供任何其他建议。
@ManagedBean(name="projectData")
@SessionScoped
public class ProjectData {
...
@ManagedProperty(value="#{projectData}")
private ProjectData projectData;
错误
com.sun.faces.mgbean.ManagedBeanCreationException
表示无法创建控制器bean,因为未找到projectData(模型bean)。 最佳答案
这应该工作:
@ManagedProperty(value="#{ProjectData}")
private ProjectData projectBean
也就是说,通常的做法是以小写字母开头实例名称。你也不是真的
ProjectData ProjectData = new ProjectData();
反而
ProjectData projectData = new ProjectData();
如果从
(name="ProjectData")
省略@ManagedBean
,则它将自动默认为projectData
。根据您的更新:
错误
com.sun.faces.mgbean.ManagedBeanCreationException
表示无法创建控制器bean,因为未找到projectData(模型bean)。实际上,这更多地表明找不到属性projectData。该属性不可写。换句话说,二传手不见了。将来,请不要重述错误消息,而只是将其复制粘贴。