首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数从PrimeFaces数据表传递到托管bean

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

Stack Overflow用户
提问于 2012-02-12 04:27:23
回答 1查看 8.7K关注 0票数 1

我有一个primefaces datatable:

代码语言:javascript
运行
复制
<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方法之后,所有的值都会被填充。Datatable具有单选按钮选择。当我选择其中一个单选按钮并单击命令按钮时,我转到某个方法,在该方法中我调用了我的bean,但我的bean拥有的datatable中的所有值都为空。

Showcase只展示了如何在模式窗口中显示数据,我找不到任何关于如何将参数传递给托管bean的信息。也许有人能帮我这个忙?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-13 12:21:14

只对我有效。也许你的数据加载逻辑是错误的(例如,你是在一个getter方法中做的),或者rowKey背后的对象的equals()方法被破坏了。

这里有一个自包含的启动示例,这样你至少可以确定你自己的错误:

代码语言:javascript
运行
复制
<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>

使用

代码语言:javascript
运行
复制
@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属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9243779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档