gpt4 book ai didi

jsf - JSF2.0中如何注入(inject)ManagedBean

转载 作者:行者123 更新时间:2023-12-04 22:00:27 27 4
gpt4 key购买 nike

我有 Controller-ManagedBeans 和 Model-ManagedBeans(如 MVC 模式)。

这是我的 Controller :

   @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 ("");
}
}

...你可以看到我的模型,它从 facelet 中获取值...

@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);
}
}

我现在的问题是它不起作用。我想我需要在这两个类之间注入(inject)依赖关系。但是怎么办?有没有可以帮助我的 JSF-pro。我想使用注释。谢谢


BalusC 发帖后更新

我稍微修改了我的代码,但还是不行。请提供任何进一步的建议。

@ManagedBean(name="projectData")
@SessionScoped
public class ProjectData {

...

@ManagedProperty(value="#{projectData}")
private ProjectData projectData;

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

最佳答案

这应该有效:

@ManagedProperty(value="#{ProjectData}")
private ProjectData projectBean

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

ProjectData ProjectData = new ProjectData();

而是

ProjectData projectData = new ProjectData();

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


根据您的更新:

The error com.sun.faces.mgbean.ManagedBeanCreationException says that the controller bean can not be created because projectData (the model-bean) is not found.

实际上更能说明property projectData 找不到。该属性不可写。换句话说,二传手不见了。以后请不要改写错误消息,只需复制粘贴即可。

关于jsf - JSF2.0中如何注入(inject)ManagedBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com