2014-02-01 3 views
1

данные, которые я вошел в поле ввода текста в штрихе лицо таблица данных не отображается в файле диалогового окна JSF и данные не отображаются в диалоговом окнеКак отобразить текст в диалоговом окне?

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.org/ui"> 
<h:head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Add/Remove Row</title> 
</h:head> 
<body> 
<h:form id="form"> 


<p:dataTable id="buss" value="#{busBean.mediumBusModel}" var="bus" 
    selection="#{busBean.selectedBus}" selectionMode="single" > 

    <p:column headerText="Brand" style="width:5%"> 

     <p:inputText value="#{bus.brand}" /> 

     </p:column> 



     <p:column headerText="Model" style="width:5%"> 

     <p:inputText value="#{bus.model}" /> 

     </p:column> 

     <p:column headerText="Action" style="width:10%"> 


     <p:commandButton actionListener="#{busBean.addBus()}" icon="ui-icon-plus" update=":form" ajax="false" title="add"/> 
     <p:commandButton actionListener="#{busBean.removeBus(bus)}" icon="ui-icon-minus" update=":form" ajax="false" title="remove"/> 
     </p:column> 

     <f:facet name="footer"> 
      <p:commandButton id="viewButton" value="View" icon="ui-icon-search" 
          update=":form:displayBus" oncomplete="PF('singleBusDialog').show()"/> 
     </f:facet> 

    </p:dataTable> 
    <br/> 

     <p:dialog id="dialog" header="Bus Detail" widgetVar="singleBusDialog" resizable="false" 
       showEffect="fade" hideEffect="explode"> 

     <h:panelGrid id="displayBus" columns="2" cellpadding="4"> 


      <h:outputText value="Brand:" /> 
      <h:outputText value="#{bus}" style="font-weight:bold"/> 

      <h:outputText value="Model:" /> 
      <h:outputText value="#{bus}" style="font-weight:bold"/> 

     </h:panelGrid> 
    </p:dialog> 
</h:form> 
</body> 
</html> 

Ниже класс компонента, который Я использовал

package com.bus.bean; 

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.bean.ViewScoped; 
import javax.faces.context.FacesContext; 

import org.primefaces.event.SelectEvent; 
import org.primefaces.event.UnselectEvent; 

import com.bus.bean.Bus; 


@ManagedBean 
@SessionScoped 
public class BusBean implements Serializable { 


    private List<Bus> busList; 

    private Bus selectedBus; 


private BusDataModel mediumBusModel; 



     public BusBean() { 

      busList=new ArrayList<Bus>(); 
      busList.add(new Bus("a","b")); 
      mediumBusModel = new BusDataModel(busList); 
      //populateRandomCars(cars, 50); 


     } 

    public List<Bus> getBusList() 
    { 


     return busList; 
    } 

    public void setBusList(List<Bus> busList) { 
     this.busList = busList; 
    } 


    public void addBus() 
    { 
     Bus newBus=new Bus(); 


     busList.add(newBus); 

    } 

    public Bus getSelectedBus() { 
     return selectedBus; 
    } 

    public void setSelectedBus(Bus selectedBus) { 
     this.selectedBus = selectedBus; 
    } 

    public void removeBus(Bus bus) 
    { 
     busList.remove(bus); 

    } 

    public BusDataModel getMediumBusModel() { 
     return mediumBusModel; 
    } 




} 
------------------------------------------------------- 
package com.bus.bean; 
import java.util.List; 
import javax.faces.model.ListDataModel; 
import com.bus.bean.Bus; 
import org.primefaces.model.SelectableDataModel; 

public class BusDataModel extends ListDataModel<Bus> implements SelectableDataModel<Bus> { 

    public BusDataModel() { 
    } 

    public BusDataModel(List<Bus> data) { 
     super(data); 
    } 

    @Override 
    public Bus getRowData(String rowKey) { 
     //In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data 

     List<Bus> buss = (List<Bus>) getWrappedData(); 

     for(Bus bus : buss) { 
      if(bus.getModel().equals(rowKey)) 
       return bus; 
     } 

     return null; 
    } 

    @Override 
    public Object getRowKey(Bus bus) { 
     return bus.getBrand(); 
    } 
} 
-----------------------------------------------------------------------------------------------/ 
package com.bus.bean; 

import java.io.Serializable; 


public class Bus implements Serializable 

{ 
    public String model; 
    public String brand; 

    public Bus() 
    { 

    } 

    public Bus(String Model,String Brand) 
    { 
     this.model = model; 
     this.brand = brand; 

    } 

    public String getModel() { 
     return model; 
    } 
    public void setModel(String model) { 
     this.model = model; 
    } 
    public String getBrand() { 
     System.out.println("in set:"+brand); 
     return brand; 
    } 
    public void setBrand(String brand) { 
     System.out.println("in set:"+brand); 
     this.brand = brand; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if(obj == null) 
      return false; 

     if(!(obj instanceof Bus)) 
      return false; 

     Bus compare = (Bus) obj; 

     return compare.model.equals(this.model); 
    } 

    @Override 
    public int hashCode() { 
     int hash = 1; 

     return hash * 31 + model.hashCode(); 
    } 

    @Override 
    public String toString() { 
     return "Bus{" + "model=" + model + ", brand=" + brand + '}'; 
    } 





    enter code here 

} 

Пожалуйста, дайте мне знать, как получить данные, которые я ввел в текстовом поле таблицы данных Primefaces в диалоговое окно

ответ

1

Вы должны использовать выбранное значение из DataTable.

selection="#{busBean.selectedBus}" 

Так, в диалоговом окне

 <h:outputText value="Brand:" /> 
     <h:outputText value="#{busBean.selectedBus.brand}" /> 

Кроме того,

<p:commandButton id="viewButton" value="View" icon="ui-icon-search" 
          update=":form:displayBus,:form:dialog" oncomplete="PF('singleBusDialog').show()"/> 

Обновление диалоговое окно со значением выбранной строки.

+0

Я изменил код согласно вашему предложению, однако данные не отображаются в диалоговом окне. – user3259553

+0

Я ввожу данные вручную в таблицу таблиц данных после ввода данных в ячейку, которую я могу просмотреть в ячейке, но когда я выбираю строку и нажимаю кнопку просмотра, выбранные данные строки не отображаются в диалоговом окне. пожалуйста, помогите, как получить данные в диалоговом окне. – user3259553

+0

@ user3259553 Нет, вы не можете этого сделать. Данные, которые вы вводите, фактически сохраняются в этой переменной типа datatable (bus). Сначала вам нужно сохранить данные, затем выбранная строка будет иметь новые данные. – Makky

0
<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.org/ui"> 
<h:head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Add/Remove Row</title> 
</h:head> 
<body> 
<h:form id="form"> 


<p:growl id="messages" showDetail="true"/> 

    <p:contextMenu for="buss"> 
     <p:menuitem value="Edit Cell" icon="ui-icon-search" onclick="PF('busTable').showCellEditor();return false; "/> 

    </p:contextMenu> 

<p:dataTable id="buss" var="bus" value="#{busBean.busModel}" editable="true" editMode="cell" widgetVar="busTable" 
selection="#{busBean.selectedBus}"> 


    <p:ajax event="cellEdit" listener="#{busBean.onCellEdit}" update=":form:messages" /> 

    <p:column selectionMode="single" style="width:2%" /> 
    <p:column headerText="Brand" style="width:25%"> 
       <p:cellEditor> 

        <f:facet name="output"><h:outputText value="#{bus.brand}" /></f:facet> 

        <f:facet name="input"><p:inputText id="brandInput" value="#{bus.brand}" style="width:96%"/></f:facet> 
       </p:cellEditor> 
      </p:column> 

      <p:column headerText="Model" style="width:25%"> 
       <p:cellEditor> 
        <f:facet name="output"><h:outputText value="#{bus.model}" /></f:facet> 
        <f:facet name="input"><p:inputText id="modelInput" value="#{bus.model}" style="width:96%"/></f:facet> 
       </p:cellEditor> 
      </p:column> 




     <p:column headerText="Action" style="width:10%"> 


     <p:commandButton actionListener="#{busBean.addBus()}" icon="ui-icon-plus" update=":form" ajax="false" title="add"/> 
     <p:commandButton actionListener="#{busBean.removeBus(bus)}" icon="ui-icon-minus" update=":form" ajax="false" title="remove"/> 
     </p:column> 

     <f:facet name="footer"> 
      <p:commandButton id="viewButton" value="View" icon="ui-icon-search" 
          update=":form:buss,:form:displayBus,:form:dialog" oncomplete="PF('singleBusDialog').show()"/> 
     </f:facet> 


    </p:dataTable> 
    <br/> 

     <p:dialog id="dialog" header="Bus Detail" widgetVar="singleBusDialog" resizable="false" 
       showEffect="fade" hideEffect="explode"> 

     <h:panelGrid id="displayBus" columns="2" cellpadding="4"> 


      <h:outputText value="Brand:" /> 
      <h:outputText value="#{busBean.selectedBus.brand}" style="font-weight:bold"/> 

      <h:outputText value="Model:" /> 
      <h:outputText value="#{busBean.selectedBus.model}"/> 
+0

выше - код, который я пытаюсь сохранить, в диалоговом окне не отображается. Пожалуйста, помогите мне получить данные, которые я ввел диалоговое окно, которое я ввел – user3259553

Смежные вопросы