关于在jsf 2中提交表单,我有一点问题:
在我的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?
回答Gabor的评论:
我的页面如下:
<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 -.-
答案 0 :(得分:0)
projectData
或projectDTO
不是您预期的正确实例。这是一个完全不同的实例。你不是急切地重新创建/覆盖豆子吗?你在范围内没有多个bean吗?它不应该是#{controller.projectData.projectDTO.title}
吗? projectData
中的controller
实例不应该是托管属性吗?
答案 1 :(得分:0)
您的projectData
bean也是RequestScoped吗?尝试更改为ViewScoped。为每个请求重新创建RequestScoped bean,也为ajax请求重新创建。什么是projectService的范围?