java - 将参数从 PrimeFaces 数据表传递到托管 bean

标签 java jsf primefaces

我有一个 primefaces 数据表:

<p:dataTable id="idCrawledDataTable"
    var="crawledData"
    value="#{crawlerCorpusTreatmentBean.crawledDataModel}"
    rowKey="#{crawledData.id}"
    rows="10"
    scrollable="true"
    scrollHeight="300"
    selection="#{crawlerCorpusTreatmentBean.crawledData}"
    style="width: 850px;">

 <f:facet name="header">
     RadioButton Based Selection
 </f:facet>

  <p:column selectionMode="single"
     style="width: 12px;"/>

  <p:column headerText="id"
     style="width: 20px;">
         #{crawledData.id}
  </p:column>

  <p:column headerText="Sritis"
      style="40px;">
          #{crawledData.domain}
  </p:column>

  <p:column headerText="URL"
      style="width: 450px;">
          #{crawledData.url}
  </p:column>

</p:dataTable>

调用action方法后,全部填充值。数据表有单选按钮选择。当我选择其中一个单选按钮并单击命令按钮时,我会转到某种调用我的 bean 的方法,但我的 bean 所具有的数据表中的所有值均为 null。

Showcases 仅显示如何在模式窗口中显示数据,我找不到任何有关如何将参数传递给托管 bean 的信息。也许有人可以帮我解决这个问题?

最佳答案

只适合我。也许您的数据加载逻辑是错误的(例如,您在 getter 方法中执行此操作)或者 rowKey 后面的对象的 equals() 方法已损坏。

这是一个独立的启动示例,以便您至少可以确定自己的错误:

<h:form>
    <p:dataTable value="#{bean.items}" var="item" selection="#{bean.item}" rowKey="#{item.id}">
        <p:column selectionMode="single" />
        <p:column headerText="id">#{item.id}</p:column>
        <p:column headerText="value">#{item.value}</p:column>
    </p:dataTable>
    <p:commandButton value="submit" action="#{bean.submit}" />
</h:form>

@ManagedBean
@ViewScoped
public class Bean implements Serializable {

    private List<Item> items;
    private Item item;

    @PostConstruct
    public void init() {
        items = new ArrayList<>();
        items.add(new Item(1L, "one"));
        items.add(new Item(2L, "two"));
        items.add(new Item(3L, "three"));
    }

    public void submit() {
        System.out.println(item);
    }

    public List<Item> getItems() {
        return items;
    }

    public Item getItem() {
        return item;
    }

    public void setItem(Item item) {
        this.item = item;
    }

}

其中Item只有Long idString value属性。

关于java - 将参数从 PrimeFaces 数据表传递到托管 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243779/

相关文章:

events - JSF f :event safe to pass parameters?

jsf - 通知系统 p :poll/push

jsf - 无法更新 <p :outputpanel>

java - JiBX:如何在我的代码中继续使用接口(interface)?

java - f :selectItems - possible? 中的两个集合

java - JSP 和 OAUTH2 身份验证

Java - 调用方法时的继承和变量类型

jsf - 通过选择复选框启用和禁用组件

jsf - 在 PrimeFaces DataTable 中使用单元格编辑器选择行使得选择行变得困难

primefaces - 在 Ajax 请求上重置 Primefaces 分页选定页面