嗨我是关于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;
}
}
我不明白为什么这些值没有显示在对话框中。请有人帮忙!
答案 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>