Выбор строк и обработка данных в rich:extendedDataTable

Я работаю с JSF2.0, Spring-Webflow2.3.1 и richfaces4.2.3. У меня есть rich:extendedDataTable, который покажет список данных (внутри него нет кнопки). Мне нужно реализовать ->

  • дважды щелкните строку, чтобы получить подробности на отдельном экране.

  • Выберите строку и нажмите кнопку «Просмотреть подробности», которая также покажет мне подробности на отдельном экране.

Я могу получить идентификатор строки, но мне нужно получить поле идентификатора, предоставленное в объекте, для извлечения данных. Как я могу сделать это возможным, используя spring-webflow.


person jijo thomas    schedule 09.03.2013    source источник


Ответы (1)


Вот пример примера в качестве второго требования.
Выберите строку и нажмите кнопку «Просмотреть подробности», которая отобразит подробности на отдельном экране.
Я предполагаю, что

  1. Имя вашего класса pojo: "YouPojoClass.java"
  2. В вашем классе pojo есть поля (member1,member2,code)
  3. Ваш набор данных extendedDataTable будет получен из yourFirstController.rowVariableList "List of YouPojoClass"
  4. Имя вашего контроллера первой страницы "yourFirstController.java"
  5. Имя вашей второй страницы: secondPage.xhtml.

// На экране первой страницы

<rich:extendedDataTable id="rowVariablepliersTable"
    value="#{yourFirstController.dataModel}" var="rowVariable">

    <rich:column width="300px">
        <f:facet name="header">
            <h:outputText value="member1" />            
        </f:facet>
        <h:outputText value="#{rowVariable.member1}" />
    </rich:column>

    <rich:column width="300px">
        <f:facet name="header">
            <h:outputText value="member2" />            
        </f:facet>
        <h:outputText value="#{rowVariable.member2}" />
    </rich:column>

    <rich:column width="90px">
        <f:facet name="header">
            <h:outputText value="view" />
        </f:facet>
        <h:commandButton 
            title="view" 
            value="view"
            action="#{yourFirstController.edit(rowVariable)}"/>
        </h:commandButton>
    </rich:column>
</rich:extendedDataTable>

// В вашем контроллере первой страницы

public String view(YouPojoClass rowVariable) {      
    Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
    requestMap.put("SELECTED_ITEM_ID", rowVariable.getCode());  
    return "secondPage";
}  

// В вашем втором контроллере страницы

public void postConstruct() {
    Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
    String SELECTED_ITEM_ID = requestMap.get("SELECTED_ITEM_ID");
    // .....
}
person ahmednabil88    schedule 09.03.2013
comment
Спасибо за ваш быстрый ответ. Но в таблице данных нет кнопки, есть только одна кнопка (просмотреть подробности) за пределами rich:extendedDataTable. - person jijo thomas; 09.03.2013
comment
Тогда ваша selectionMode собственность вашего extendedDataTable должна быть single - person ahmednabil88; 09.03.2013
comment
В соответствии с вашей реализацией каждая строка будет иметь один h:commandButton, и действие будет выполняться с помощью этой кнопки. Но для меня такая кнопка не должна использоваться. :( Кроме того, здесь я должен использовать yourPojoClass.id вместо selectedRowId. - person jijo thomas; 09.03.2013