我正在使用接缝,我想这样做: 我想显示帖子列表,然后用户点击帖子,点击帖子就会显示出来。 我的代码是:
<h:dataTable id="hotels" value="#{postList}" var="post" rendered="#{postList.rowCount>0}">
<h:column>
<f:facet name="header">title</f:facet>
<s:link value="#{post.title}" action="#{postBean.postView(post)}"></s:link>
</h:column>
</h:dataTable>
我的豆是:
@Stateful
@Name("postBean")
public class PostBeanImpl extends BaseBean implements PostBean {
@PersistenceContext
private EntityManager entityManager;
@In(required = false)
@Out(required = false)
Post post;
@DataModel
public List<Post> postList;
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
public Post getPost() {
return post;
}
public void setPost(Post post) {
this.post = post;
}
public List<Post> getPostList() {
return postList;
}
public void setPostList(List<Post> postList) {
this.postList = postList;
}
public String view() {
if (post != null)
return "";
String sid = getParamValue("id");
if (sid == null) return "home";
Integer id = Integer.valueOf(sid);
post = entityManager.find(Post.class, id);
return "";
}
@Begin
public void postView(Post selectedPost) {
this.post = entityManager.merge(selectedPost);
}
public void list() {
setPostList(entityManager.createQuery("from Post").getResultList());
}
public String save() {
entityManager.persist(post);
return "/blog/view.xhtml?id=" + post.getId();
}
@Remove @End
public void destroy() {}
}
问题是当我点击帖子时它会调用postView(Post selectedPost)和selectedPost的所有属性都为空。
但是列表中的对象是可以的(不是null) 为什么会这样? 帮助我。
感谢
答案 0 :(得分:1)
查看@DataModelSelection注释 - 这允许您访问数据模型中的被点击对象。