【问题标题】:creating and accessing an object in xhtml (prime faces)在 xhtml 中创建和访问对象(primefaces)
【发布时间】:2014-06-25 19:39:51
【问题描述】:

如何访问 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");
}

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

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

【问题讨论】:

  • 你的问题不清楚。您还没有定义 bean 的名称,也没有定义它的范围。问题真的很模糊。

标签: java jsf jsf-2 primefaces javabeans


【解决方案1】:

这是通过将所需对象放入隐式 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}">

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

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

【讨论】:

  • 这有帮助,但没有其他方法可以将对此视图所做的更改反映到同一个对象中。
【解决方案2】:

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

【讨论】:

  • 如果我为服务器创建 geter setter,我需要将 server 设置为 IntroBean 的属性,但 Server 是一个单独的 bean,它有自己的 setter/getter。正确阅读问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多