Jsf 2 用于修改数据的primefaces datatable对话框
这是我的第一篇文章。这个网站和所有参与的人都很棒。谢谢大家。我的问题是:我有一个带有对话框的datatable,它显示所选寄存器的信息。那很好。但是,如果我尝试使用该对话框修改信息,则该字段不会显示信息。EclipseJuno2ee、PrimeFaces3.5以及jsf2和Tomcat7.0.39。Java 7.0.07 64位 页面admin.xhtmlJsf 2 用于修改数据的primefaces datatable对话框,jsf-2,primefaces,datatable,Jsf 2,Primefaces,Datatable,这是我的第一篇文章。这个网站和所有参与的人都很棒。谢谢大家。我的问题是:我有一个带有对话框的datatable,它显示所选寄存器的信息。那很好。但是,如果我尝试使用该对话框修改信息,则该字段不会显示信息。EclipseJuno2ee、PrimeFaces3.5以及jsf2和Tomcat7.0.39。Java 7.0.07 64位 页面admin.xhtml .... ui加载的页面adminusers.xhtml:include <p:panel id="usuarios" head
....
ui加载的页面adminusers.xhtml:include
<p:panel id="usuarios" header="USUARIOS" style="background: transparent; border: 1; width: 850px;">
<p:commandButton value="Nuevo usuario" type="button" onclick="newuser.show()" immediate="true"/>
<br /><br />
<p:dataTable id="usertable" var="data" value="#{DTableCustomerBean.datos}" emptyMessage="Sin datos."
resizableColumns="true" style="text-align: center; align: center; border-radius: 1.6em;"
selection="#{DTableCustomerBean.selectedCustomer}" selectionMode="single" rowKey="#{data.id}" >
<p:columns value="#{DTableCustomerBean.columns}" var="column" columnIndexVar="colIndex"
width="#{column.width}">
<f:facet name="header">#{column.header}</f:facet>
<h:outputText value="#{data[column.property]}" />
</p:columns>
<p:column style="width: 80px;">
<p:commandLink update=":adminform:showuserform" oncomplete="showuser.show()" immediate="true"
title="Ver" style="margin-right: 10px;">
<img src="images/info.png" style="width: 20px; height: 20px; border: 0px;"/>
<f:setPropertyActionListener value="#{data}" target="#{DTableCustomerBean.selectedCustomer}" />
</p:commandLink>
<p:commandLink update=":adminform:edituserform" oncomplete="edituser.show()" immediate="true"
title="Modificar" style="margin-right: 10px;">
<img src="images/modificar.png" style="width: 20px; height: 20px; border: 0px;"/>
<f:setPropertyActionListener value="#{data}" target="#{DTableCustomerBean.selectedCustomer}" />
</p:commandLink>
<p:commandLink update=":adminform:showuserform" oncomplete="showuser.show()" immediate="true"
title="Borrar" style="margin-right: 10px;">
<img src="images/delete.png" style="width: 20px; height: 20px; border: 0px;"/>
<f:setPropertyActionListener value="#{data}" target="#{DTableCustomerBean.selectedCustomer}" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog id="edituserdlg" header="Modificar datos" widgetVar="edituser" resizable="FALSE" modal="TRUE">
<h:messages errorClass="errorMessage" infoClass="infoMessage" warnClass="warnMessage" />
<h:panelGrid id="edituserform" columns="2" cellpadding="4" cellspacing="4"
style="font-size:16px; align: center; margin: 0 auto;" >
<h:outputText value="Identificador:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.id}" style="font-weight: bold;" />
<h:outputText value="Nombre:" />
<p:inputText id="edtnombre" value="#{DTableCustomerBean.selectedCustomer.nombre}" size="20" maxlength="20"
style="font-weight: bold;" />
<h:outputText value="Apellido:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.apellido}" style="font-weight: bold;" />
<h:outputText value="Empresa:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.empresa}" style="font-weight: bold;" />
<h:outputText value="Dirección:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.direccion}" style="font-weight: bold;" />
<h:outputText value="Rut:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.rut}" style="font-weight: bold;" />
<h:outputText value="Teléfonos:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.telefonos}" style="font-weight: bold;" />
<h:outputText value="Usuario:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.usuario}" style="font-weight: bold;" />
<h:outputText value="Permisos:" />
<h:outputText value="#{DTableCustomerBean.selectedCustomer.tipoUsuario}" style="font-weight: bold;" />
</h:panelGrid>
<p:panel style="margin-left: 30px; display: block; margin: 0 auto; text-align: center; background: transparent; border: 0;">
<p:commandButton value="Modificar" type="submit" oncomplete="edituser.hide()" update="usuario" />
<p:commandButton value="Cancelar" type="button" onclick="edituser.hide()" style="margin-left: 30px;"/>
</p:panel>
#{column.header}
豆角
@ManagedBean(name="DTableCustomerBean")
// @RequestScoped
// @SessionScoped
@ViewScoped
public class DTableCustomerBean implements Serializable {
private static final long serialVersionUID = 1L;
private List<ColumnModel> columns;
private List<Customer> datos;
private String columnName;
private Customer selectedCustomer;
public DTableCustomerBean() {
System.out.println("Inicia DTableCustomerBean");
createColumns();
addData();
}
// Getters and Setters
public List<ColumnModel> getColumns() {
return columns;
}
public void setColumns(List<ColumnModel> columns) {
this.columns = columns;
}
public List<Customer> getDatos() {
return datos;
}
public void setDatos(List<Customer> datos) {
this.datos = datos;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public Customer getSelectedCustomer() {
return selectedCustomer;
}
public void setSelectedCustomer(Customer selectedCustomer) {
this.selectedCustomer = selectedCustomer;
}
// Fin Getters and Setters
private void createColumns() {
System.out.println("DTableCustomerBean createColumns");
columns = new ArrayList<ColumnModel>();
columns.add(new ColumnModel("Nombre", "nombre", 100));
columns.add(new ColumnModel("Apellido", "apellido", 100));
columns.add(new ColumnModel("Empresa", "empresa", 150));
columns.add(new ColumnModel("Teléfonos", "telefonos", 150));
columns.add(new ColumnModel("Usuario", "usuario", 50));
}
static public class ColumnModel implements Serializable {
private static final long serialVersionUID = 1L;
private String header;
private String property;
private int width;
public ColumnModel(String header, String property, int width) {
this.header = header;
this.property = property;
this.width = width;
}
public String getHeader() {
return header;
}
public String getProperty() {
return property;
}
public int getWidth() {
return width;
}
}
private void addData() {
UserDAO userdao;
System.out.println("DTableCustomerBean addData");
userdao = new UserDAO();
datos = new ArrayList<Customer>();
datos = userdao.getAllCustomers();
}
}
@ManagedBean(name=“DTableCustomerBean”)
//@RequestScoped
//@SessionScoped
@视域
公共类DTableCustomerBean实现可序列化{
私有静态最终长serialVersionUID=1L;
私有列表列;
私人名单DATO;
私有字符串列名;
私人客户选择客户;
公共DTableCustomerBean(){
System.out.println(“Inicia DTableCustomerBean”);
createColumns();
addData();
}
//接球手和接球手
公共列表getColumns(){
返回列;
}
公共void集合列(列表列){
this.columns=列;
}
公共列表getDatos(){
返回DATO;
}
公共无效数据集(列表数据集){
this.datos=datos;
}
公共字符串getColumnName(){
返回列名称;
}
public void setColumnName(字符串columnName){
this.columnName=columnName;
}
公共客户getSelectedCustomer(){
返回所选客户;
}
公共作废设置selectedCustomer(Customer selectedCustomer){
this.selectedCustomer=selectedCustomer;
}
//翅片吸气剂和沉降剂
私有void createColumns(){
System.out.println(“DTableCustomerBean createColumns”);
columns=newarraylist();
添加(新的ColumnModel(“Nombre”,“Nombre”,100));
添加(新的ColumnModel(“Apellido”,“Apellido”,100));
添加(新的ColumnModel(“Empresa”,“Empresa”,150));
添加(新的ColumnModel(“Teléfonos”,“telefonos”,150));
添加(新的ColumnModel(“Usuario”,“Usuario”,50));
}
静态公共类ColumnModel实现了可序列化{
私有静态最终长serialVersionUID=1L;
私有字符串头;
私有财产;
私有整数宽度;
公共列模型(字符串头、字符串属性、整型宽度){
this.header=头;
this.property=属性;
这个。宽度=宽度;
}
公共字符串getHeader(){
返回头;
}
公共字符串getProperty(){
归还财产;
}
公共int getWidth(){
返回宽度;
}
}
私有void addData(){
UserDAO UserDAO;
System.out.println(“DTableCustomerBean addData”);
userdao=newuserdao();
datos=新的ArrayList();
datos=userdao.getAllCustomers();
}
}
outputText字段中的数据显示正确。字段inputText id=“edtnombre”显示为空,但名称为。当然,如果我将inputText更改为outputText,它可以正常工作
我苦苦寻找解决办法,但什么也没找到。我尝试过不同的想法,但没有成功
有人能帮忙吗?谢谢 您的数据表和对话框以一种
形式出现。这行不通
将对话框放在表单之外(但如果“包含”整个文件,则不能)
你应该:
-一个表单中包含dataTable
-对话框位于第一个窗体之外
-第二个表单内部对话框
-更新属性,引用对话框中的表单和该表单中的panelGrid。您的数据表和对话框位于一个表单中。这行不通
将对话框放在表单之外(但如果“包含”整个文件,则不能)
你应该:
-一个表单中包含dataTable
-对话框位于第一个窗体之外
-第二个表单内部对话框
-更新属性,引用对话框中的表单和该表单中的panelGrid。Well。我发现了问题。在这种情况下,EclipseWebNavigator不能很好地工作。现在它工作正常。在页面中显示datatable之后,似乎需要一些时间才能正常工作。也许是Eclipse的问题。我发现了问题。在这种情况下,EclipseWebNavigator不能很好地工作。现在它工作正常。在页面中显示datatable之后,似乎需要一些时间才能正常工作。也许是Eclipse的一些问题。
@ManagedBean(name="DTableCustomerBean")
// @RequestScoped
// @SessionScoped
@ViewScoped
public class DTableCustomerBean implements Serializable {
private static final long serialVersionUID = 1L;
private List<ColumnModel> columns;
private List<Customer> datos;
private String columnName;
private Customer selectedCustomer;
public DTableCustomerBean() {
System.out.println("Inicia DTableCustomerBean");
createColumns();
addData();
}
// Getters and Setters
public List<ColumnModel> getColumns() {
return columns;
}
public void setColumns(List<ColumnModel> columns) {
this.columns = columns;
}
public List<Customer> getDatos() {
return datos;
}
public void setDatos(List<Customer> datos) {
this.datos = datos;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public Customer getSelectedCustomer() {
return selectedCustomer;
}
public void setSelectedCustomer(Customer selectedCustomer) {
this.selectedCustomer = selectedCustomer;
}
// Fin Getters and Setters
private void createColumns() {
System.out.println("DTableCustomerBean createColumns");
columns = new ArrayList<ColumnModel>();
columns.add(new ColumnModel("Nombre", "nombre", 100));
columns.add(new ColumnModel("Apellido", "apellido", 100));
columns.add(new ColumnModel("Empresa", "empresa", 150));
columns.add(new ColumnModel("Teléfonos", "telefonos", 150));
columns.add(new ColumnModel("Usuario", "usuario", 50));
}
static public class ColumnModel implements Serializable {
private static final long serialVersionUID = 1L;
private String header;
private String property;
private int width;
public ColumnModel(String header, String property, int width) {
this.header = header;
this.property = property;
this.width = width;
}
public String getHeader() {
return header;
}
public String getProperty() {
return property;
}
public int getWidth() {
return width;
}
}
private void addData() {
UserDAO userdao;
System.out.println("DTableCustomerBean addData");
userdao = new UserDAO();
datos = new ArrayList<Customer>();
datos = userdao.getAllCustomers();
}
}