【问题标题】:p:dataTable no records foundp:dataTable 没有找到记录
【发布时间】:2015-09-22 05:17:00
【问题描述】:

我在对话框中有一个数据表。

当用户点击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>

为什么对话数据表什么都不能显示?

selectedMessagemessages 类型的列表,并且不为空。

【问题讨论】:

  • 通常对话框在页面加载时已经绘制好了,只是隐藏起来了,所以如果模型发生变化,你仍然需要 AJAX 更新它。将update 添加到您的 commandLink 可能会修复它。
  • @DavidS 喜欢这个? update="PF('dlg1').show();"
  • 否,更新属性必须与页面上的组件 ID 匹配。您将希望了解更多有关此内容的信息,因为它是在 JSF 中使用 AJAX 的重要部分。这是一个例子stackoverflow.com/questions/14227681/…
  • BalusC 在这里写了一个很好的指南stackoverflow.com/questions/8634156/…
  • @DavidS 是对的。在深入了解之前先了解一些基本的 jsf/ajax 教程

标签: jsf primefaces datatable jsf-2.2


【解决方案1】:

您需要在每次点击后更新对话框:

<p:commandLink ... process="@this" update=":msgForm:dlgPanel" onComplete="PF('dlg1').show();"/>

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 2015-08-26
    • 1970-01-01
    • 2014-06-17
    • 2016-03-30
    • 2017-07-03
    • 2010-11-04
    • 2019-01-24
    • 2011-10-15
    相关资源
    最近更新 更多