我有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。该属性不可写。换句话说,二传手不见了。将来,请不要重述错误消息,而只是将其复制粘贴。

10-06 13:35