【问题标题】:Initializing primefaces datatable rowkey初始化 primefaces 数据表行键
【发布时间】:2015-09-12 04:41:48
【问题描述】:

我有一个 primefaces 数据表,一旦用户单击搜索按钮,我将在 ArrayList 中填充对象的属性。我需要添加一个带有单选按钮的列,以便用户可以选择要更新的表行。我想将 rowkey 设置为对象的 metadataKey 属性,但出现以下错误:

rowKey="#{result.metadataKey}":找不到属性“metadataKey” 输入 java.lang.String

我认为这是由于在呈现表格时 metadataKey 不存在造成的。为了解决这个问题,我将表格设置为仅在用户完成搜索后才呈现,但这导致了同样的错误。

这里是相关的html:

<h:form id="dataForm">
    <p:panel styleClass="centered">
        <p:messages id="message" showDetails="true" autoUpdate="true" />
        <p:outputLabel id="searchLabel" value="Search for Metadata:  " />&nbsp;&nbsp;&nbsp;
                <p:inputText id="search"
            value="#{updateMetadataItemsBean.searchTerm}" />&nbsp;&nbsp;&nbsp;
                <p:commandButton id="searchButton" value="Search" 
            action="#{updateMetadataItemsBean.search}"
            update="dataForm:metadataitems, message, dataForm:dataPanel" />
        <br />
        <br />
        <br />
    </p:panel>
    <p:panel styleClass="center" id="dataPanel" >
        <p:dataTable id="metadataitems" var="result"
            value="#{updateMetadataItemsBean.results}" styleClass="center"
            resizableColumns="true"
            selection="updateMetadataItemsBean.selectedMetadataItem"
            rowKey="#{result.metadataKey}" rendered="#{updateMetadataItemsBean.show}">              
            <p:column headerText="Select Item to Update" selectionMode="single"></p:column>
            <p:column headerText="Metadata Key">
                <h:outputText value="#{result.metadataKey}" />
            </p:column>
            <p:column headerText="Map Name">
                <h:outputText value="#{result.mapName}" />
            </p:column>
            <p:column headerText="Metadata Name">
                <h:outputText value="#{result.metadataName}" />
            </p:column>
            <p:column headerText="Metadata Value">
                <h:outputText value="#{result.metadataValue}" />
            </p:column>
            <p:column headerText="WTX Adapter">
                <h:outputText value="#{result.wtxAdapter}" />
            </p:column>
            <p:column headerText="Card Number">
                <h:outputText value="#{result.cardNumber}" />
            </p:column>
            <p:column headerText="Create Date TS">
                <h:outputText value="#{result.createDateTS}" />
            </p:column>
        </p:dataTable>
        <br />
        <br />
        <br />
    </p:panel>

这是来自 bean 的相关代码:

public class UpdateMetadataItemsBean implements Serializable{
public static final long serialVersionUID = 4;
private String metadataKey;
private String mapName;
private String metadataName;
private String metadataValue;
private String wtxAdapter;
private String cardNumber;
private String createDateTS;
private String searchTerm;
private String selectedDataKey;
private boolean show = false;
private MetadataItems selectedMetadataItem;
private ArrayList<MetadataItems> results = new ArrayList<MetadataItems>();

[getters and setters]

public void search() {
    Search s = new Search();
    setResults(s.search(searchTerm));

    setShow(true);
}

提前感谢任何可以为我指明正确方向的人。

【问题讨论】:

  • 加评论,把selection="updateMetadataItemsBean.selectedMetadataItem"改成selection="#{updateMetadataItemsBean.selectedMetadataItem}"
  • 我不敢相信我错过了。谢谢@Lucas Costa!
  • MetadataItems 中有metadataKey 的get 和setter?而且 metadataKey 有唯一的价值吗?
  • 信不信由你,问题在于您在第一条评论中提到的我的参考不正确。我不确定它是如何产生这个错误的,但修复它解决了这个问题。
  • 我添加如何响应,以备将来搜索。

标签: jsf-2 primefaces


【解决方案1】:

改变

selection="updateMetadataItemsBean.selectedMetadataItem"

selection="#{updateMetadataItemsBean.selectedMetadataItem}".

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多