Jsf 值未从datatable传递到对话框
我最近遇到了这个例子。 datatable正在使用我输入的值进行正确更新。但是当我想在对话框中显示它时,它不会显示任何内容。 我实际上不明白为什么使用value=“#{CreateBookBean.selectedUser.fname}”代替value=“#{CreateBookBean.fname}” 这是我的java代码Jsf 值未从datatable传递到对话框,jsf,primefaces,Jsf,Primefaces,我最近遇到了这个例子。 datatable正在使用我输入的值进行正确更新。但是当我想在对话框中显示它时,它不会显示任何内容。 我实际上不明白为什么使用value=“#{CreateBookBean.selectedUser.fname}”代替value=“#{CreateBookBean.fname}” 这是我的java代码 <p:column> <p:commandButton id="selectButton" update="@(form)" oncomp
<p:column>
<p:commandButton id="selectButton" update="@(form)" oncomplete="userDialog.show()" icon="ui-icon-search" title="View">
<f:setPropertyActionListener value="#{book}" target="#{CreateBookBean.selectedUser}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:outputPanel>
<p:dialog header="User Detail" modal="true" widgetVar="userDialog" width="200" height="175">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="fname" value="First Name: " />
<h:outputText id="fname" value="#{CreateBookBean.selectedUser.fname}" />
<h:outputLabel for="lname" value="Last Name: " />
<h:outputText id="lname" value="#{CreateBookBean.selectedUser.lname}" />
<h:outputLabel for="mobileno" value="mobile no: " />
<h:outputText id="mobileno" value="#{CreateBookBean.selectedUser.mobileno}" />
</h:panelGrid>
</p:dialog>
public类CreateBookBean{
私人书籍=新书();
private List books=new ArrayList();
私人书籍选择服务;
公共字符串reinit(){
书=新书();
返回null;
}
这里包括setter和getter
}
使用按钮中的Update属性来显示对话框,例如,
以显示数据表中的项目。将此问题分为两部分
首先:
当您想要显示更新的值时(例如,使用h:outputText
),您需要更新此元素。更新此元素意味着,它将获取其支持bean的当前值。
这样做:
public class CreateBookBean {
private Book book = new Book();
private List<Book> books = new ArrayList<Book>();
private Book selectedUser;
public String reinit() {
book = new Book();
return null;
}
setters and getters are included here
}
#CreateBookBean.fname
的意思是:“获取CreateBookBean
,获取它的属性fname
”。
在这种情况下,您将拥有以下类布局:
public class CreateBookBean {
private Book selectedUser;
....
public Book getSelectedUser() {
return this.selectedUser;
}
}
public class Book {
private String fname;
....
public String getFname() {
this.fname;
}
}
根据您发布的这段代码,我猜
CreateBookBean
有一个名为selectedUser
(代码显示它:target=“#{CreateBookBean.selectedUser}”
),而且selectUser
有一个属性fname
值“book”未达到其目标。因此,在打开对话框时,它不会显示任何值!“书”的类型是否为用户?如果是这样,您需要在问题中添加其他代码以查看问题。处理过程中是否有任何异常/错误消息?张贴他们以及!book是我使用的datatable的var名称。向我们展示更多代码!xhtml和java。否则我们就帮不了你了!也许你也应该读书。“账面”价值没有达到其目标。因此,在打开对话框时,它不显示任何值!–Pramoth刚才你的问题得到回答了吗?你的问题真的解决了吗?我看到你接受了手册的答案,但我也看到你在评论中不断抱怨手册不起作用。我在回答中没有看到任何反馈,表明你的问题确实得到了解决。因此,对答案的接受是非常令人困惑的。我的第二个问题得到了答案。不是第一次。我还没有得到第一个问题的答案。你能帮我吗?当你第一次打开对话框时,用firebug(或类似的东西)检查你的请求,以及你从服务器得到的响应。在你的答案中同时发布请求和回复。你的表格是什么?p:outputPanel
和p:dialog
?我们无法在您的代码中看到它!加上它。
public class CreateBookBean {
private Book selectedUser;
....
public Book getSelectedUser() {
return this.selectedUser;
}
}
public class Book {
private String fname;
....
public String getFname() {
this.fname;
}
}
public class CreateBookBean {
private String fname;
....
public String getFname() {
return this.fname;
}
}