0
votes

Hi i am new with primefaces and i have some problems with the values that are shown in my dataTable. I load data from my sql database and show this data in the dataTable. There is one colums called :"Comments", where is a button inside. If you click on this button a dialog is open up. Inside this dialog frame, there should be also some of the same values i show in the dataTable, but it doesnt work. I cant display the values in that dialog frame. I googled a lot and tried a lot but nothing helped. Here is xhtml:

<h:body>
    <h:form>
        <p:dataTable value="#{gutachtenBean.daten}" var="auftrag"
            rowKey="#{gutachtenBean.daten}" selectionMode="multiple">

            <f:facet name="header">
                <p:outputPanel>
                    <h:outputText value="Vorgangsliste"
                        style="position:relative; top: 4px; float:left;  font-size:14px" />
                    <h:outputText value="Search all fields:" style="margin-right:10px" />
                    <p:inputText style="width:150px" placeholder="Enter keyword" />
                </p:outputPanel>
            </f:facet>

            <p:column style="text-align:center"
                filterBy="#{auftrag.schadennummer}" headerText="Schadennummer"
                filterMatchMode="contains">
                #{auftrag.schadennummer}
            </p:column>

            <p:column style="width:150px;text-align:center"
                filterBy="#{auftrag.vorgangsnummer}" headerText="Vorgangsnummer"
                filterMatchMode="contains">
                #{auftrag.vorgangsnummer}
            </p:column>

            <p:column style="width:120px;text-align:center"
                filterBy="#{auftrag.kennzeichen}" headerText="Kennzeichen"
                filterMatchMode="contains">
                #{auftrag.kennzeichen}
            </p:column>

            <p:column style="width:100px;text-align:center"
                filterBy="#{auftrag.kennzeichen}" headerText="Organisation">
                <f:facet name="filter">
                    <p:selectOneMenu>
                        <f:selectItem itemLabel="Select One" />
                        <f:selectItems value="#{dtFilterView.brands}" />
                    </p:selectOneMenu>
                </f:facet>
            </p:column>

            <p:column style="width:220px;text-align:center"
                filterBy="#{auftrag.status}" headerText="Status"
                filterMatchMode="contains">
                #{auftrag.status}
            </p:column>

            <p:column headerText="SLA-Beginn"
                style="width:130px;text-align:center">
            </p:column>

            <p:column headerText="SLA-Laufzeit"
                style="width:130px;text-align:center">
            </p:column>

            <p:column headerText="SLA-Überschreitung"
                style="width:130px;text-align:center">
            </p:column>

            <p:column filterBy="#{auftrag.kennzeichen}"
                style="width:100px;text-align:center" headerText="Ampel">
                <f:facet name="filter">
                    <p:selectOneMenu>
                        <f:selectItem itemLabel="Select One" />
                        <f:selectItems value="#{dtFilterView.brands}" />
                    </p:selectOneMenu>
                </f:facet>
            </p:column>

            <p:column headerText="Kommentare"
                style="width:100px;text-align:center">
                <p:commandButton styleClass="viewbutton"
                    style="border-left:1px solid #666; height:20px;font-size:10px"
                    value="Open" type="button" onclick="PF('dlg1').show();" />
            </p:column>
        </p:dataTable>
        <p:commandButton styleClass="viewbutton" value="View"
            icon="ui-icon-search"
            style="border-left:1px solid #666;margin-top:10px"></p:commandButton>
    </h:form>
    <p:dialog header="Kommentar" widgetVar="dlg1" height="600px"
        width="900px">
        <h:form>
            <h:outputText value="#{auftrag.kommentar}"/>
        </h:form> 
    </p:dialog>
</h:body>

Here is my Bean:

@ManagedBean(name="gutachtenBean")
@SessionScoped
public class GutachtenController implements Serializable{

    private static final long serialVersionUID = 8410541973590420821L;

    private DatabaseConnector connector = new DatabaseConnector();
    private List<GutachtenDaten> daten;

    public GutachtenController(){
        daten = connector.getAuftragsDaten();
    }

    public List<GutachtenDaten> getDaten() {
        return daten;
    }

    public void setDaten(List<GutachtenDaten> daten) {
        this.daten = daten;
    }
}


public class GutachtenDaten {

    private String schadennummer;
    private String kennzeichen;
    private String status;
    private String vorgangsnummer;
    private String kommentar;

    public String getSchadennummer() {
        return schadennummer;
    }

    public void setSchadennummer(String schadennummer) {
        this.schadennummer = schadennummer;
    }

    public String getKennzeichen() {
        return kennzeichen;
    }

    public void setKennzeichen(String kennzeichen) {
        this.kennzeichen = kennzeichen;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getVorgangsnummer() {
        return vorgangsnummer;
    }

    public void setVorgangsnummer(String vorgangsnummer) {
        this.vorgangsnummer = vorgangsnummer;
    }

    public String getKommentar() {
        return kommentar;
    }

    public void setKommentar(String kommentar) {
        this.kommentar = kommentar;
    }

}

I dont understand why the values arent shown in the dialog frame. Please someone help!

1

1 Answers

0
votes

#{auftrag} is only available inside the table, during rendering. On click of the button, you must put the selected row in a bean variable, and display that in the dialog.
Add something like this to GutachtenController

private GutachtenDaten selectedGD;

public GutachtenDaten getSelectedGD() {
    return this.selectedGD;
}

public void setSelectedGD(GutachtenDaten gd) {
    this.selectedGD = gd;
}

public void initSelectedGD(GutachtenDaten gd) {
    setSelectedGD(gd);
}

Change Kommentare button to

<p:commandButton styleClass="viewbutton"
                 style="border-left:1px solid #666; height:20px;font-size:10px"
                 value="Open" type="button" oncomplete="PF('dlg1').show();" 
                 actionListener="#{gutachtenBean.initSelectedGD(auftrag)}" update="@widgetVar(dlg1)"/>

And change dialog to

<p:dialog header="Kommentar" widgetVar="dlg1" height="600px"
    width="900px">
    <h:form>
        <h:outputText value="#{gutachtenBean.selectedGD.kommentar}"/>
    </h:form> 
</p:dialog>