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

JSF Primefaces在编辑弹出窗口中的行值为空

呼延臻
2023-03-14

我使用JSF 2.0与Primeface 3.4.2

由于某种奇怪的原因,当单击datatable中行的命令按钮时,我无法在弹出对话框窗口中获取值。不确定我做错了什么?

任何帮助都是非常值得赞赏的。

我在JSF页面有以下内容

<p:dataTable id="dataTable" var="emp" lazy="true"
   value="#{myMB.lazyModel}" 
selection="#{myMB.selectedEmployee}"...>

<p:column>
<p:commandButton id="edit" update=":frmedit:editDlg" process="@this"
onmousedown="dlg.show()" icon="ui-icon-pencil"
title="Edit" >
<f:setPropertyActionListener value="#{emp}"
target="#{myMB.selectedEmployee}" />
</p:commandButton>
</p:column>

对话框代码

<h:form id="frmedit">
<p:dialog header="Employees" style="font-weight:bold"
widgetVar=Dialog" resizable="false" id="dlg"
showEffect="fade" hideEffect="fade" appendToBody="true"
modal="true" width="200" height="250">

<h:panelGrid columns="2" cellspacing="5">
<h:outputText value="Employee #" />
<h:outputText value="#{myMB.selectedEmployee.empNo}"
style="font-weight:bold" />
</h:panelGrid>

最后是ManagedBean

@Named("myMB")
@ViewAccessScoped

private Employee selectedEmployee= new Employee();

有能手和二传手

更新1

<p:column>                          
<p:commandButton id="edit" update=":frmedit:display" process="@this"
title="View" 
icon="ui-icon-pencil"   style="border-width:0;background:none;"
onmousedown="Dialog.show()">
<f:setPropertyActionListener value="#{emp}"
target="#{myMB.selectedEmployee}" />
</p:commandButton>
</p:column>    


<p:dialog header="Employees" style="font-weight:bold"
widgetVar=Dialog" resizable="false" id="dlg"
showEffect="fade" hideEffect="fade" appendToBody="true"
modal="true" width="200" height="250">
<h:form id="frmedit">

<h:panelGrid id="display" columns="2" cellspacing="5">
<h:outputText value="Employee #" />
<h:outputText value="#{myMB.selectedEmployee.empNo}"
style="font-weight:bold" />
</h:panelGrid>
</h:form>
</p:dialog>

共有2个答案

丌官寒
2023-03-14

请尝试在中使用WidgetVar="dlg"

对话框从其widgetVar属性

所以dlg。show()指的是widgetVar=“dlg”而不是id

全卜霸
2023-03-14

出现这种情况的三个主要原因是

>

属性侦听器未设置该值。您可以通过向该属性的setter添加一些日志来轻松调试它

bean实际上是重新创建的,并且selected雇员属性是根据您的行重新初始化的:

Employee selectedEmployee= new Employee();

根据您对上一个答案的评论,对于具有相同值的同一对话框,您不应该有widgetVarid

我投赞成票(3)。您应该验证bean实际上没有被丢弃和重新创建(构造函数或@PostConstructor日志记录)。

 类似资料:
  • 我不知道为什么youtue_title和youtube_description是空的???在我添加文本到这个编辑文本???我一直这样做为什么现在它不工作??? 有问题吗,因为它在弹出窗口中?

  • 我正在使用Kendo网格,其中有几个列用于概览行数据。当用户单击添加/编辑按钮时,弹出窗口将显示一些附加数据,其中包括一些复选框。 我在将复选框与当前MVVM模型绑定时遇到问题,因为在添加新行时,Kendo将模型视为变量,而不是数组。这会导致在选中一个复选框(单击)时选中多个复选框。在看了剑道MVVM之后,我打算得到当前弹出窗口的MVVM模型,以便操作一些数据,但没有成功。因此,我将在以下方面寻求

  • 我有一个EditText对象输入,我正在动态创建。当我选择EditText对象输入文本时,我只是不想弹出小键盘,因为我制作了不同的按钮并为所有这些按钮设置了OnClickListner-s,它们将执行输入,但当小键盘弹出时,它覆盖了屏幕,我想禁用它,因为我不想让任何人从小键盘输入文本。我只希望他们从我创建的按钮输入值。

  • 问题内容: 有人可以建议我如何在Java Swing中实现弹出窗口。我希望弹出窗口是模式窗口(打开弹出窗口时用户无法返回主窗口)。 我尝试使用JDialog进行操作,但是它只允许一个小部件供用户输入,而我需要多个小部件。我在这里可能是错的,但这就是我能够做到的。 感谢你的帮助。 问题答案: 使用一个JDialog。可以添加的内容没有限制,可以将所需的内容添加到JDialog中(与使用JFrame时

  • 所以我正在c#winform中使用硒火狐web驱动程序,我在下面有这段代码来获取弹出窗口的句柄,当您单击“webtraffic_popup_start_button”时显示,它应该获得弹出窗口的句柄,但弹出句柄与当前句柄相同。 任何帮助将不胜感激 这就是弹出式菜单的样子。

  • 问题内容: 我想使用Firefox浏览器,使用RSelenium从网站下载文件。我正确地完成了所有操作(导航,选择正确的元素并写下我想要的内容);现在,我单击“下载”按钮,然后打开一个Firefox弹出窗口,并询问我是否要下载文件或“用…打开”。 不幸的是,由于隐私限制,我无法编写示例。 我的问题是:如何在需要时切换到弹出窗口/警报并单击“确定”? 我尝试了以下方法,但均未成功: 我也试过了 但是