我有一个primefaces datatable:
<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的信息。也许有人能帮我这个忙?
发布于 2012-02-13 12:21:14
只对我有效。也许你的数据加载逻辑是错误的(例如,你是在一个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 id和String value属性。
https://stackoverflow.com/questions/9243779
复制相似问题