所以我们有一个f:事件:
<f:metadata>
<f:event type="preRenderView" listener="#{dashboardBacking.loadProjectListFromDB}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
在初始页面加载(渲染)时根据需要触发.
但是,此preRenderView事件也由ajax部分页面呈现触发,该呈现重新呈现具有id projectListing的h:panelgroup,如下所示.
<h:commandButton action="#{mrBean.addProject}" value="Create Project"
title="Start a new project">
<f:ajax render="projectListing" />
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
我只希望为初始页面渲染调用dashboardBacking.loadProjectListFromDB,但是当有ajax部分渲染时则不需要.我可以使用更合适的事件或方法吗?
默认情况下,JSF似乎非常"有状态".我需要允许人们使用我们的应用程序,多个选项卡在应用程序的不同部分执行许多操作.
如果没有大量的重新设计,我似乎无法找到合适的指令来实现这一目标.
我们目前没有使用ICEfaces,但我刚在ICEfaces文档中找到了这个:
6.5.7.ICEfaces Portlet和并发DOM视图
ICEfaces提供了一个名为Concurrent DOM Views的功能,它控制ICEfaces框架是否支持来自同一浏览器的单个应用程序的多个视图.在portlet容器中运行时,ICEfaces需要将单个门户网站页面上的单独portlet视为不同的视图,因此几乎总是需要(因此最安全)将此参数设置为true.
例6.19.在WEB-INF/web.xml配置文件中启用ICEfaces并发DOM视图功能,以便将同一门户网站页面上的单独portlet视为不同视图
com.icesoft.faces.concurrentDOMViews是的
所以,我想知道这个神话般的声音功能是否可能适用于我现有的h:表格或者它是否只适用于ICEface组件?
任何人都可以提供任何好的建议,让JSF应用程序在多个选项卡中工作?
我有一个抽象的MappedSuperClass,参与者,它由三种"参与者"扩展.然后每个人都使用自己的'Project',也是一个抽象的MappedSuperClass.但是,我希望基类了解Projects,这样我就可以编写通用代码来与Participants进行交互.如何使用Hibernate注释指定它?以及如何在ExtendedParticipant和ExtendedProject类中覆盖它?
每个Participant类型和每个Project类型都有自己的数据库表,其中包含我无法更改的现有数据和ID(在表中不唯一).
以下代码给出了IDE错误"多对一属性不应该是'Mapped Superclass'".
@MappedSuperclass
public abstract class Participant implements Persistable {
...
@ManyToOne
@JoinColumn(name = "project_id")
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
...
}
Run Code Online (Sandbox Code Playgroud)
并且Project类与同样的问题大致相同:
@MappedSuperclass
public abstract class Project implements Persistable {
...
@OneToMany
public List<Participant> getParticipants() {
return participants;
}
public void setProject(List<Participant> participants) {
this.participants = participants;
}
...
}
Run Code Online (Sandbox Code Playgroud)