2014-01-15 52 views
1

我有這樣一個XHTML:的RichFaces:顯示詳細信息,在彈出的[命令按鈕,動作和popupPanel]

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:s="http://jboss.org/schema/seam/taglib" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" template="layout/template.xhtml"> 

    <ui:define name="body"> 
     <h:body> 
      <h:form id="form"> 
       <rich:panel> 
        <rich:dataTable value="#{scriptConsole.serversList}" var="server"> 

         <f:facet name="header"> 
          <h:outputText value="Servers" /> 
         </f:facet> 

         <rich:column> 
          <f:facet name="header">Name</f:facet> 
          <h:outputText value="#{server.name}" /> 
         </rich:column> 

         <rich:column> 
          <f:facet name="header">Actions</f:facet> 
          <a4j:commandButton value="view" oncomplete="#{rich:component('modalScripts')}.show();" action="#{scriptConsole.setServerSelected(server)}"/> 
         </rich:column> 
        </rich:dataTable> 
       </rich:panel> 
       <rich:popupPanel id="modalScripts" modal="true" autosized="true" 
        resizeable="false"> 
        <f:facet name="controls"> 
         <h:outputLink value="#" 
          onclick="#{rich:component('modalScripts')}.hide(); return false;">X</h:outputLink> 
        </f:facet> 
        <h:outputText 
          value="#{scriptConsole.serverSelected.name}" /> 

       </rich:popupPanel> 
      </h:form> 
     </h:body> 
    </ui:define> 
</ui:composition> 

我嘗試以顯示與服務器信息的DataTable,並顯示在彈出的服務器的詳細信息,但是當按鈕被點擊時,服務器的細節不會出現在彈出窗口中,我不知道如何在bean中選擇服務器並在彈出窗口中顯示它。

回答

1

在bean中存儲服務器標識符(名稱或ID)(請參閱my answer)並在彈出窗口中重新使用它。

例子:

<h:form id="notesForm"> 
     <rich:messages /> 

     <a4j:jsFunction name="selectRow" oncomplete="#{rich:component('noteDetails')}.show()" 
      render="noteDetailsForm"> 
      <a4j:param name="noteId" assignTo="#{chNotesAction.currentNoteId}" 
       converter="javax.faces.Long" /> 
     </a4j:jsFunction> 

     <rich:dataTable id="noteTable" style="width: 100%" 
      value="#{chNotesAction.notesList}" var="rs" 
      rowClasses="oddrow, evenrow" columnClasses="nowrap," 
      rows="#{referenceData.recordsPerPage}" sortMode="single" 
      onrowclick="selectRow('#{rs.noteLogId}')" 
      rowKeyVar="currRow"> 

      <rich:column id="date"> 
       <f:facet name="header"> 
        <h:outputText value="#{msg.entryDate}" /> 
       </f:facet> 
       <h:outputText value="#{rs.changeDate}" /> 
      </rich:column> 

      <rich:column> 
       <f:facet name="header"> 
        <h:outputText value="#{msg.notesType}" /> 
       </f:facet> 
       <h:outputText value="#{rs.noteType}" /> 
      </rich:column> 

      <f:facet name="footer"> 
       <rich:dataScroller renderIfSinglePage="false" for="noteTable" 
        stepControls="show" fastControls="hide" /> 
      </f:facet> 
     </rich:dataTable> 
    </h:form> 

    <rich:popupPanel id="noteDetails" autosized="true"> 
     <f:facet name="header"> 
      <h:panelGroup> 
       <center> 
        <h:outputText value="#{msg.noteTitle}" /> 
       </center> 
      </h:panelGroup> 
     </f:facet> 
     <f:facet name="controls"> 
      <h:graphicImage value="/images/close.png" 
       style="cursor:pointer" onclick="#{rich:component('noteDetails')}.hide()" /> 
     </f:facet> 
     <h:form id="noteDetailsForm"> 
      <rich:messages /> 

      <h:panelGrid columns="2" columnClasses="nowrap,"> 
       <h:outputText value="#{msg.notes}" /> 
       <h:inputTextarea value="#{chNoteForm.noteText}" label="#{msg.notes}" 
        rows="10" cols="50" style="resize:none;"> 
        <f:validateLength maximum="4000" /> 
       </h:inputTextarea> 

       <h:outputText value="#{msg.clientInitiated}" /> 
       <h:selectBooleanCheckbox value="#{chNoteForm.clientInitiated}" /> 
      </h:panelGrid> 
     </h:form> 
    </rich:popupPanel> 

豆部分:

private Long currentNoteId; 
    public void setCurrentNoteId(Long noteId) { 
     this.currentNoteId = noteId; 
     // setup popup related data here 
     } 
    } 
+0

我用這個例子對我的解決方案。謝謝 –