@ViewScoped object is destroyed even if the same JSF page is displayed
Issue
I have JSF application using javax.faces.view.ViewScoped
object like the following. However, the ViewScoped bean is destroyed after the action even if the same JSF page is displayed. How do I keep the ViewScoped bean on the same page?
- example.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:jsf="http://xmlns.jcp.org/jsf">
<head jsf:id="head">
<meta charset="UTF-8" />
<title>example</title>
<form jsf:id="form" jsf:prependId="false">
...
<input type="submit" jsf:action="#{exampleBackingBean.execute(download)}" value="click" />
</form>
</h:body>
</html>
- ExampleBackingBean.java
@Model
@Named(value="exampleBackingBean")
public class BackingBean implements Serializable {
@Inject
ExampleFileList filelist;
public String execute(String action) throws Exception {
if (action.equals("download") {
// application processing against the filelist object like file download...
// back to the same example.xhtml
return "example.xhtml";
} else {
// other application processing ...
return "other.xhtml";
}
}
...
- ExampleListBean.java
@Named(value = "list")
@ViewScoped
public class ExampleFileList implements Serializable{
List<String> file = new ArrayList<String>();
@PostConstruct
public void init(){
// initialize file list
}
public List<String> getFile() {
return file;
}
public void setFile(List<String> file) {
this.file = file;
}
Environment
- Red Hat JBoss Enterprise Application Platform (EAP)
- 7.x
- JSF
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.