[英]PrimeFaces DataTable editing with autocomplete in pojo
我有一个带有数据表的页面,它必须显示有关邮箱对象的各种信息。 其中一个信息是邮箱的所有者,它的ID存储在Mailbox对象中。 在输出中,我通过支持bean的方法解决了这个问题,该方法通过邮箱对象检索用户名。 在输入中我认为使用自动完成与pojo但我不能完全意识到这是怎么做的。
我的jsf页面:
<p:dataTable id="dataTable" value="#{bean.mailboxes}" var="m" editable="true">
<!-- other table -->
<p:column headerText="Owner">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{bean.userByMailbox(m)}" />
</f:facet>
<f:facet name="input">
<!-- here comes autocomplete -->
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
我的豆子:
public class Bean {
// Other properties and methods
List<Mailbox> mailboxes;
public List<Mailbox> getMailboxes() {
if (mailboxes == null) {
Query q = em.createNamedQuery("Mailbox.findAll");
mailboxes = q.getResultList();
}
return mailboxes;
}
public User getUserByMailbox(Mailbox m) {
Query q = em.createNamedQuery("User.findByUsrId");
q.setParameter("usrId", m.getUsrId());
return (User)q.getSingleResult();
}
}
谢谢你们!
你的模型错了。
在Mailbox
,替换
@Column
private Long usrId;
通过
@ManyToOne
@JoinColumn(name="usrId")
private User user;
这样您就可以使用#{m.user}
而不是#{bean.userByMailbox(m)}
。 这样,该属性也是可写的(也许你在尝试在<p:autoComplete value>
使用这个EL表达式时实际上得到了一个PropertyNotWritableException
;在将来的问题中告诉那样,而不是问一个过于通用的问题)。
请注意,这个具体问题基本上与JSF和<p:autoComplete>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.