首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JSF2.0中注入ManagedBeans

如何在JSF2.0中注入ManagedBeans
EN

Stack Overflow用户
提问于 2010-07-20 14:46:51
回答 2查看 3.4K关注 0票数 2

我有Controller-ManagedBeans和ManagedBeans(类似MVC-模式)。

在这里我的主计长:

代码语言:javascript
复制
   @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 ("");
 }
    }

...and你可以看到我的模型,它从一个小面片中得到它的值.

代码语言:javascript
复制
@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发布后的最新消息

我稍微修改了我的代码,但它仍然不能工作。请给我进一步的建议。

代码语言:javascript
复制
@ManagedBean(name="projectData")
@SessionScoped
public class ProjectData {

..。

代码语言:javascript
复制
@ManagedProperty(value="#{projectData}")
private ProjectData projectData;

错误com.sun.faces.mgbean.ManagedBeanCreationException表示无法创建控制器bean,因为找不到projectData (模型bean)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-21 09:13:23

好了,伙计们,我找到了答案:

在我的控制器中缺少get和set方法:

代码语言:javascript
复制
/*
 * Getter and Setter
 */
public ProjectData getProjectData() {
    return projectData;
}

public void setProjectData(ProjectData projectData) {
    this.projectData = projectData;
}

参考文献

票数 3
EN

Stack Overflow用户

发布于 2010-07-20 15:11:15

这应该是可行的:

代码语言:javascript
复制
@ManagedProperty(value="#{ProjectData}")
private ProjectData projectBean

也就是说,通常的做法是以小写开头实例名称。你也不是真实的

代码语言:javascript
复制
ProjectData ProjectData = new ProjectData();

但更确切地说

代码语言:javascript
复制
ProjectData projectData = new ProjectData();

如果您从(name="ProjectData")中省略了@ManagedBean,那么它将自动默认为projectData

根据您的更新:

错误com.sun.faces.mgbean.ManagedBeanCreationException表示无法创建控制器bean,因为找不到projectData (模型bean)。

实际上更能说明的是,无法找到property projectData。该属性不可写。换句话说,策划人失踪了。在未来,请不要重述错误信息,而只是复制它们。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3291178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档