Java JSF2数据绑定问题

Java JSF2数据绑定问题,java,jsf,jsf-2,Java,Jsf,Jsf 2,关于JSF2中表单的提交,我有一个小问题: 在我的webapp中,我得到了一个更新数据库中实体的函数。此函数从托管bean中获取相关数据 因此,我的问题是视图中的更改不会传递给managedBean。为了让您明白这一点,这里有一个例子: public String updateProject() { projectService.updateProject(projectData.getProjectDTO()); return ("overview.xhtml"); } prj

关于JSF2中表单的提交,我有一个小问题:

在我的webapp中,我得到了一个更新数据库中实体的函数。此函数从托管bean中获取相关数据

因此,我的问题是视图中的更改不会传递给managedBean。为了让您明白这一点,这里有一个例子:

 public String updateProject() {
  projectService.updateProject(projectData.getProjectDTO());
  return ("overview.xhtml");
 } 
prjectData是我的ManagedBean。这个不行!未进行任何更新

 public String deleteProject() {
  projectData.getProjectDTO().setDeleted(true);
  projectService.updateProject(projectData.getProjectDTO());
  return ("overview.xhtml");
 }
在这里,当我通过代码更改一个值时,它就工作了!因此,我猜视图外的值不会传递给managedBean

哪里会出错?我是否必须调用某个操作才能使数据将视图传递给managedBean


对加博评论的答复:

我的页面看起来像:

<h:form>
 <h:commandLink action="#{controller.updateProject}" value="Edit" />
 <h:outputLabel for="title" value="Titel" /> 
 <h:inputText id="title" value="#{projectData.projectDTO.title}" />
</h:form>
@ManagedBean
@RequestScoped
public class Controller {

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

不知什么原因,我在eclipse中的调试模式不再工作,它一直忽略我的断点。我会解决的,然后我会检查的实例。Sry-.-

无论是
projectData
还是
projectDTO
都不是您期望的正确实例。这是一个完全不同的例子。你不是很渴望重新创建/覆盖bean吗?您的范围中没有多个bean吗?例如,它不应该是
#{controller.projectData.projectDTO.title}
controller
中的
projectData
实例不应该是托管属性吗?

您的
projectData
bean是否也有请求范围?尝试更改为ViewScope。为每个请求以及ajax请求重新创建RequestScope bean。projectService的范围是什么?

那么您的JSF页面是什么样子的呢?调用这些函数应该是什么?能否打开projectData bean和projectDTO属性的代码以了解如何定义它。是否尝试调试它以查看数据是否传递给托管bean?并检查它是否是同一个实例?(请参阅BalusC答案)。如果您无法调试,请至少尝试“可怜的人调试”,通过System.out.println()将状态打印到控制台。检查您的数据是否传递给控制器,对收到的projectData使用System.out.println()。projectData是SessionScoped,而projectService不是managedBean,因此其生命周期由控制器处理