这似乎不对.我正在清理我的代码,我只是注意到了这一点.每个ajax请求都会触发构造函数和@PostConstruct我的@ViewScopedbean.即使是简单的数据库分页也会触发它.
我知道这@ViewScoped比@RequestScoped任何请求都要重建并且不应该重建.只有在通过GET重新加载完整页面之后.
如果在浏览器中打开了Primefaces对话框,有没有办法告诉后备bean?
这就是我在facelet上显示一个对话框的方法:
<p:menuitem value="Click me" oncomplete="dialogWidget.show();" />
Run Code Online (Sandbox Code Playgroud)
当我从查找对话框对象ViewRoot,都dialog.isVisible()和dialog.isInView()返回true,即使未所示的对话框.或者,是否有一个标志告诉我主窗口是否显示为灰色(这是在显示模式对话框时发生的)?
背景信息:我正在试图找出显示FacesMessages的位置.我的应用程序可以在两个位置显示消息:主窗口或对话框弹出窗口.打开模式对话框时,我希望消息仅显示在对话框中.如果没有显示对话框,我希望消息显示在主窗口中.
我有以下托管bean.但每次我回到同一个bean的帖子,即在调用updateFileList时.我得到了一个新的FileDAO实例.
我怎么能阻止这个?在托管bean中使用DAO是否安全,如果没有,我可以做出哪些更改来改善它.
@ManagedBean(name = "file")
@ViewScoped
public class FileController implements Serializable {
private static final long serialVersionUID = 1L;
private List<LoadFileLog> fileList = null;
private Date selectedDate;
FileDAO fileDAO;
public FileController() {
System.out.println(" In file Controller constructor");
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
ApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
fileDAO = (FileDAO) context.getBean("FileDAO");
}
public FileDAO getFileDAO() {
return fileDAO;
}
public void setFileDAO(FileDAO fileDAO) {
this.fileDAO = fileDAO;
}
public List<LoadFileLog> getFileList() {
return fileList;
}
public Date getSelectedDate() {
return selectedDate; …