当前位置: 首页 > 知识库问答 >
问题:

P:DataTable上下文菜单“Selection”对象未更新

百里意智
2023-03-14

我正在尝试更新 中选定的行(对象),当用户单击上下文菜单,但绑定到 selection=“”的对象没有根据行选择/上下文菜单的单击进行更新时,调试显示bean中的对象属性不包含任何更新值,而是为空。

代码为:

<h:form id="searchStdentsFrm">

    <p:dialog id="searchStdentsDlg" header="Search Students" widgetVar="srchStdents" modal="true">

        <p:contextMenu for="srchStdentsTble" id="menuStdEdit">
            <p:menuitem value="Change Status" update="stdDetail" icon="ui-icon-flag" oncomplete="PF('editStudentDialog').show()" />
            <p:menuitem value="Edit Student" update="stdStatusDetail" icon="ui-icon-wrench" oncomplete="PF('editStudentStatusDialog').show()" action="#{viewStudentsBean.testAction}"/>
        </p:contextMenu>

        <p:dataTable id="srchStdentsTble" var="student" value="#{viewStudentsBean.studentsList}"
                     rowKey="#{student.id}" selection="#{viewStudentsBean.selectedStudent}"
                     selectionMode="single" widgetVar="srchStdentTbl"
                     emptyMessage="No students found with the given criteria" filteredValue="#{viewStudentsBean.filteredStudents}">

            <p:ajax event="contextMenu"/>

            <f:facet name="header">
                <p:outputPanel>
                    <h:outputText value="Search Students:" />
                    <p:inputText id="globalFilter" onkeyup="PF('srchStdentTbl').filter()" style="width:200px" placeholder="Enter keyword"/>
                </p:outputPanel>
            </f:facet>

            <p:column id="stdentId" headerText="Id" filterBy="#{student.id}" filterStyle="display:none">
                <h:outputText value="#{student.id}" />
            </p:column>

            <p:column id="stdentFirstName" headerText="Firstname" filterBy="#{student.firstName}" filterStyle="display:none">
                <h:outputText value="#{student.firstName}" />
            </p:column>

            <p:column id="stdentLastname" headerText="Lastname" filterBy="#{student.lastName}" filterStyle="display:none">
                <h:outputText value="#{student.lastName}" />
            </p:column>

            <p:column id="stdentFathername" headerText="Father name" filterBy="#{student.fatherName}" filterStyle="display:none">
                <h:outputText value="#{student.fatherName}" />
            </p:column>

            <p:column id="stdentGender" headerText="Gender" filterBy="#{student.gender}" filterStyle="display:none">
                <h:outputText value="#{student.gender}" />
            </p:column>

            <p:column id="stdentDOB" headerText="Date Of birth" filterBy="#{student.dob}" filterStyle="display:none">
                <h:outputText value="#{student.dob}" />
            </p:column>

            <p:column id="stdentSkype" headerText="Skype/Email" filterBy="#{student.skypeOrEmailId}" filterStyle="display:none">
                <h:outputText value="#{student.skypeOrEmailId}" />
            </p:column>

            <p:column id="stdentPhone" headerText="Phone No" filterBy="#{student.phoneNumber}" filterStyle="display:none">
                <h:outputText value="#{student.phoneNumber}" />
            </p:column>

            <p:column id="stdentAddrs" headerText="Address" filterBy="#{student.address}" filterStyle="display:none">
                <h:outputText value="#{student.address}" />
            </p:column>

            <p:column id="stdentCountry" headerText="Country" filterBy="#{student.country}" filterStyle="display:none">
                <h:outputText value="#{student.country}" />
            </p:column>

            <p:column id="stdentJOD" headerText="Joining Date" filterBy="#{student.dateOfJoining}" filterStyle="display:none">
                <h:outputText value="#{student.dateOfJoining}" />
            </p:column>

            <p:column id="stdentGenralRmrks" headerText="General Remarks" filterBy="#{student.generalRemarks}" filterStyle="display:none">
                <h:outputText value="#{student.generalRemarks}" />
            </p:column>

            <p:column id="studentStatus" headerText="Student Status" filterBy="#{student.studentStatus}" filterStyle="display:none">
                <h:outputText value="#{student.studentStatus}" />
            </p:column>
        </p:dataTable>

    </p:dialog>

    <p:dialog id="editStdentDlg" header="Edit Student" widgetVar="editStudentDialog" modal="true">
        <p:outputPanel id="stdDetail" style="text-align:center;">

            <p:outputLabel value="First Name *" />
            <p:inputText value="#{viewStudentsBean.selectedStudent.lastName}"/>

            <p:panelGrid id="editStdPanelGrd" columns="2" cellpadding="5" style="width: 100%;">
                <p:outputLabel value="First Name *" />
                <p:inputText id="stdEditFname" value="#{viewStudentsBean.selectedStudent.firstName}"/>

                <p:outputLabel value="Last Name *" />
                <p:inputText id="stdEditLastname" value="#{viewStudentsBean.selectedStudent.lastName}"/>

                <p:outputLabel value="Father's Name *" />
                <p:inputText id="stdEditFathName" value="#{viewStudentsBean.selectedStudent.fatherName}"/>

                <p:outputLabel value="Gender *" />
                <h:selectOneMenu id="stdEditGnder" value="#{viewStudentsBean.selectedStudent.gender}">
                    <f:selectItem itemValue="Male" itemLabel="Male" />
                    <f:selectItem itemValue="Female" itemLabel="Female" />
                </h:selectOneMenu>

                <p:outputLabel value="Date Of Birth *" />
                <p:calendar id="stdEditDOB" value="#{viewStudentsBean.selectedStudent.dob}"/>

                <p:outputLabel value="Skype Id/Email *" />
                <p:inputText id="stdEditSkype" value="#{viewStudentsBean.selectedStudent.skypeOrEmailId}"/>

                <p:outputLabel value="Phone No *" />
                <p:inputText id="stdEditPNo" value="#{viewStudentsBean.selectedStudent.phoneNumber}"/>

                <p:outputLabel value="Address *" />
                <p:inputText id="stdEditAddrs" value="#{viewStudentsBean.selectedStudent.address}"/>

                <p:outputLabel value="Country *" />
                <p:inputText id="stdEditCountry" value="#{viewStudentsBean.selectedStudent.country}"/>

                <p:outputLabel value="Date of joining *" />
                <p:calendar id="stdEditDOJ" value="#{viewStudentsBean.selectedStudent.dateOfJoining}"/>

                <p:outputLabel value="General Remarks" />
                <p:inputText id="stdEditGR" value="#{viewStudentsBean.selectedStudent.generalRemarks}"/>
            </p:panelGrid>

        </p:outputPanel>
    </p:dialog>

    <p:dialog id="editStdentStatusDlg" header="Edit Student" widgetVar="editStudentStatusDialog" modal="true">
        <p:outputPanel id="stdStatusDetail" style="text-align:center;">
            The current status of:<p:outputLabel value="#{viewStudentsBean.selectedStudent.lastName}"/>
            is: <p:outputLabel value="#{viewStudentsBean.selectedStudent.studentStatus}" />
        </p:outputPanel>
    </p:dialog>
</h:form>

我被困在这里了。如有任何帮助,我将不胜感激

共有1个答案

支智志
2023-03-14

找到解决办法了。实际上是我想要显示/编辑绑定到p:dataTable的选择对象的第二个对话框,需要在上下文菜单中更新,如:

update=":searchStdentsForm:editStdentDlg"

表示需要显式引用的表单和对话框。

 类似资料:
  • 无法使用SafariDriver Selenium在Safari浏览器中打开上下文菜单。获得以下异常: org . open QA . selenium . web Driver exception:未知命令:< br> {"id":"az1mvyq9x4ly "," name":"mouseMoveTo "," parameters ":< br > { " element ":":wdc:14

  • 上下文对象 上下文对象(Context)是一个类似于 Map<String, Object> 的结构,用户可以用字符串做 Key,放入任何类型的数据。因为该对象不需要在客户端和服务端进行传输,所以它当中存放的数据,不必是可序列化类型。 上下文对象具有判断某个 Key 是否存在的功能,但是在不同语言实现时,可以根据各自语言的特性在语法或方法命名上有所不同。 上下文对象还应具有一个 clone 方法,

  • 上下文对象 context 变量的可用属性一览: 属性字段 类型 可用 描述 app Vue 根实例 客户端 & 服务端 包含所有插件的 Vue 根实例。例如:在使用 axios 的时候,你想获取 $axios 可以直接通过 context.app.$axios 来获取 isClient Boolean 客户端 & 服务端 是否来自客户端渲染(废弃。请使用 process.client ) isS

  • 我对上下文菜单有问题。在本主题之后,我发现在尝试加载上下文菜单insight JavaFX任务时有一个限制。我测试了实现platform.runlater(),但没有成功。 其他可能的解决方案是:

  • 我在Visual Studio C#IDE中定义了一个ContextMenuStri上下文菜单,并对程序进行编码,以便当用户右键单击屏幕上的一个对象时,上下文菜单成功弹出。用户可以从上下文菜单中选择一个项目,代码成功确定用户选择了哪个上下文菜单项。到目前为止还不错。问题是上下文菜单接受右键单击作为选择上下文菜单项的机制。当我不小心双击右键单击屏幕上的一个对象时,我注意到了这一点...菜单在第一次单

  • 问题内容: 我有以下带有关联上下文菜单的按钮 单击该按钮时,关联的内容在其下方显示为上下文菜单。 在IE 7以外的所有浏览器上,此功能都非常有效。在IE7中,上下文菜单(ul)显示在其下方的按钮下方。我想这可能是由于堆栈上下文如何解析这些元素。 我的CSS目前看起来像这样: 关于我在做什么错的任何想法吗? 问题答案: 我已经通过更改元素顺序解决了这一问题。我从同时包含按钮和菜单中删除了相对位置元素