使用URL更新组件

时间:2014-01-04 00:56:03

标签: java jsf primefaces

我想更新其他组件但是找不到它们。如何设置路径?

我总是收到以下留言:Cannot find component with identifier ":test" referenced from "tabViewCompAll:inboxTable"

我正在使用JSF 2.1Primefaces 3.5

这是我的代码:

<ui:define name="contentLeft">
            <p:tabView id="tabViewPosts">
                <p:tab title="Inbox">
                    <p:dataTable id="inboxTable" var="task"
                        value="#{taskboxBean.taskboxList}" paginator="true" rows="10"
                        selection="#{taskboxBean.taskbox}"
                        selectionMode="single" rowKey="{task.TB_ID}">

                        <p:ajax event="rowSelect" update=":test"
                          />

                        <p:column headerText="Post">
                            <h:outputText
                                value="#{task.FROM_USER.FIRST_NAME} #{task.FROM_USER.LAST_NAME} (#{task.FROM_USER.EMAIL})" />
                            <br />
                            <h:outputText value="#{task.TASKTYPE.NAME}" />
                            <br />
                            <h:outputText value="#{task.CREATE_TIMESTAMP}" />                       </p:column>

                    </p:dataTable>
                </p:tab>
            </p:tabView>
        </ui:define>

        <ui:define name="contentRight">
        <div id="test">
            <p:commandButton value="New Message"/>
            <h:outputText value="#{taskboxBean.taskbox.FIRST_NAME} #{taskboxBean.taskbox.LAST_NAME} "/>
            <h:outputText value="(#{taskboxBean.taskbox.EMAIL})"/>
            <h:outputText value="#{taskboxBean.taskbox.TASKTYPE.NAME}"/>
            <h:outputText value="#{taskboxBean.taskbox.CREATE_TIMESTAMP}}"/>
            </div>
        </ui:define>

1 个答案:

答案 0 :(得分:2)

大家好,现在收到以下消息"DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute".

但是我设置了一个rowkey。 我更改了以下代码:

    <ui:define name="title">
        <h:outputText value="Taskbox" />
    </ui:define>
    <ui:define name="contentLeft">
    <h:form id="postForm">

        <p:inputText id="searchText" value="#{taskboxBean.search}" />
        <p:watermark for="searchText" value="Search" />
        <p:commandButton id="searchButton" value="GO"
            actionListener="#{taskboxBean.searchPosts}" />
        <p:tabView id="tabViewPosts">


            <p:tab title="Inbox">
                <p:dataTable id="inboxTable" var="task"
                    value="#{taskboxBean.taskboxList}" paginator="true" rows="10"
                    selection="#{taskboxBean.taskbox}"
                    selectionMode="single" rowKey="{task.TB_ID}" emptyMessage="">

                    <p:ajax event="rowSelect" update=":contentForm"
                      listener="#{taskboxBean.onTaskboxRowSelect}"/>

                    <p:column headerText="Post">
                        <h:outputText
                            value="#{task.FROM_USER.FIRST_NAME} #{task.FROM_USER.LAST_NAME} (#{task.FROM_USER.EMAIL})" />
                        <br />
                        <h:outputText value="#{task.TASKTYPE.NAME}" />
                        <br />
                        <h:outputText value="#{task.CREATE_TIMESTAMP}" />
                    </p:column>
                </p:dataTable>
            </p:tab>
        </p:tabView>
        </h:form>
    </ui:define>
    <ui:define name="contentRight">
    <h:form id="contentForm">
        <p:commandButton value="New Message"/>
        <h:outputText value="(#{taskboxBean.taskbox.EMAIL})"/>
        </h:form>
    </ui:define>

</ui:composition>