在xhtml中创建和访问对象(主要面)

时间:2014-05-08 12:08:27

标签: java jsf jsf-2 primefaces javabeans

如何在jsf页面上访问创建的对象?我不想把对象作为这个bean的属性。下面是我尝试使用的示例代码

import org.Server;

@ManagedBean
public class IntroBean {
private int id;
private String name;  


public String doSend() {
    Server server = new Server();
    server.setId(id);
    server.setName(name);
    return("send-page");
}

现在我想访问server上的send-page.xhtml对象。 这是xhtml页面的代码

<h2>Id : #{server.id}</h2>
<h2>Name : #{server.name}</h2>

2 个答案:

答案 0 :(得分:0)

JSF需要在支持bean中使用正确的getter / setter方法,我在代码中看不到server的那些。查看http://www.mkyong.com/jsf2/primefaces/primefaces-hello-world-example/

答案 1 :(得分:0)

这是通过将所需对象放入其中一个隐式EL对象来实现的,例如sessionScope

private Map<String,Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
...
public String doSend(){
    Server server = new Server();
    server.setId(id);
    server.setName(name);    
    sessionMap.put("serverObject", server);
    return("send-page");
}

然后,通过以下方式获取视图:

<h2>Id : #{sessionScope['serverObject'].id}</h2>
<h2>Name : #{sessionScope['serverObject'].name}</h2>

根据新要求,可以通过在输入组件中使用隐式EL对象来完成:

Change the name of the server : 
<h:inputText value="#{sessionScope['serverObject'].name}">

最后,通过以下方式检索辅助bean中的所需对象:

public String doSave(){    
    Server server2 = (Server)sessionMap.get("serverObject");
    ...
}