2014-12-01 2 views
0

Привет, я новичок с первичками, и у меня есть некоторые проблемы со значениями, которые показаны в моей таблице данных. Я загружаю данные из моей базы данных sql и показываю эти данные в dataTable. Существует один колонок: «Комментарии», где находится кнопка внутри. Если вы нажмете на эту кнопку, откроется диалоговое окно. Внутри этого диалогового фрейма должны быть также некоторые из тех же значений, которые я показываю в dataTable, но он не работает. Я не могу отобразить значения в этом диалоговом окне. Я много гулял и много пробовал, но ничего не помогло. Вот XHTML:Диалог Primefaces не показывает значения

<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

#{auftrag} доступен только внутри таблицы, при рендеринге. При щелчке по кнопке вы должны поместить выбранную строку в переменную компонента и отобразить ее в диалоговом окне.
Добавить что-то вроде этого, чтобы 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> 
+0

Спасибо за быстрый ответ, но он не работает. Прежде всего «oncomplete» даже не открывает диалоговый фрейм. только onclick открывает его. вторые значения внутри диалогового фрейма еще не показаны. –

+0

Вы проверяли ошибки на сервере и клиенте, когда используете 'oncomplete'? Нет причин, по которым он не должен работать, кроме случаев, когда есть какое-то исключение –

+0

Он даже не ошибается: D просто не открывает его –

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