使用Facelets在Java Server Faces中创建“编辑我的项目”页面

假设您有以下Facelet(使用Facelets 1.1.12):

edit_item.xhtml which i access with edit_item.jsf 

现在我有另一个页面将我发送到带有GET-paremeter ID的edit_item.jsf,uri看起来像这样: http://mysite.com/edit_item.jsf?ID=200 ://mysite.com/edit_item.jsf?ID = 200

如何访问Bean并获取信息,并在JSF和Facelets的请求页面上显示? 有没有办法在页面加载时运行bean?

您可以使用faces-config.xml配置从param映射中注入ID。

对于这个简单的bean:

 public class BeanWithId implements Serializable { private String id; private String info; private void populateInfo() { info = "Some info from data source for id=" + id; } public String getId() { return id; } public void setId(String id) { this.id = id; populateInfo(); } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public String save() { System.out.println("Saving changes to persistence store"); return null; // no navigation } } 

您可以使用此定义注入ID:

   beanWithId datasource.BeanWithId request  id java.lang.String #{param.ID}   

小面孔forms:

  

ID:

Info:

这不是唯一的方法(例如,您可以使用FacesContext直接查看ID)。