0
我在对话框中有一个数据表。p:dataTable找不到记录
当用户单击Detail
链接时,应显示带有数据表的对话框。
下面是代码:
<h:form>
<h:dataTable value="#{messageBean.messagesList}" var="msg">
<h:column>
<f:facet name="header">Detail</f:facet>
<p:commandLink action="#{messageBean.fetchSelectedMessage(msg.msgId)}" value="#{msg.summary}" />
</h:column>
</h:dataTable>
</h:form>
这是messageBean.fetchSelectedMessag(...)
:
@ManagedBean
@SessionScoped
public class MessageBean {
...
private List<Messages> messagesList;
private List<Messages> selectedMessage;
public void fetchSelectedMessage(String msgId) {
String sql = "SELECT * FROM messages WHERE msgId=?";
selectedMessage = jdbcTemplate.query(sql, new Object[]{msgId}, new BeanPropertyRowMapper<Messages>(Messages.class));
System.out.println("fetched selected message== " + selectedMessage); //correct
//open dialog sucucessfully
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('dlg1').show();");
}
//getter/setters
那么这个对话框应打开(并成功打开,但不显示任何内容)
<p:dialog widgetVar="dlg1" modal="true" height="100">
<p:dataTable var="msg1" value="#{messageBean.selectedMessage}">
<p:column headerText="id">
<h:outputText value="#{msg1.msgId}"/>
</p:column>
<p:column headerText="to person">
<h:outputText value="#{msg1.toPerson}"/>
</p:column>
</p:dataTable>
</p:dialog>
为什么对话框数据表不能显示任何东西?
selectedMessage
是messages
类型的列表,它不为空。
通常的对话框已经画在页面加载,它只是隐藏的,所以你仍然需要AJAX,如果模型的变化更新。向你的commandLink添加一个'update'可能会修复它。 – DavidS
@DavidS这样子? 'update =“PF('dlg1')。show();”' – Sajad
不,更新属性必须与页面上的组件ID匹配。您将需要了解更多信息,因为它是使用AJAX和JSF的重要组成部分。这里是一个例子http://stackoverflow.com/questions/14227681/primefaces-ajax-update-of-panel-from-another-form。 – DavidS