Primefaces对话框不显示值

时间:2014-12-01 12:27:59

标签: jquery jsf primefaces datatable

嗨我是关于primefaces的新手,我的dataTable中显示的值有些问题。我从我的sql数据库加载数据并在dataTable中显示这些数据。有一个名为“评论”的列,里面有一个按钮。如果单击此按钮,则会打开一个对话框。在这个对话框中,我应该在dataTable中显示一些相同的值,但它不起作用。我无法在该对话框中显示值。我google了很多,尝试了很多,但没有任何帮助。 这是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>

这是我的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;
    }

}

我不明白为什么这些值没有显示在对话框中。请有人帮忙!

1 个答案:

答案 0 :(得分:0)

#{auftrag}仅在呈现期间在表内可用。单击该按钮,必须将所选行放在bean变量中,并在对话框中显示该行。
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);
}

Kommentare按钮更改为

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

将对话框更改为

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