如何在对话框中显示文字?

时间:2014-02-01 14:49:16

标签: jsf primefaces datatable

我在主要数据表的输入文本字段中输入的数据未显示在对话框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>

下面是我使用过的bean类

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数据表的文本字段中输入的数据添加到对话框

2 个答案:

答案 0 :(得分:1)

您应该使用数据表中的选定值。

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()"/>

使用所选行的值更新对话框。

答案 1 :(得分: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}"/>