Почему этот диалог не всплывает? (JSF2.0 + ПРЕИМУЩЕСТВА) - PullRequest
0 голосов
/ 31 марта 2011

Я хочу сделать диалоговое окно всплывающим, когда я щелкаю по строке таблицы, но оно не работает. (Основные компоненты p: dataTable и p: dialog) Кроме того, похоже, что selectioMode работает неправильно.Почему это происходит?

Страница JSF:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:p="http://primefaces.prime.com.tr/ui">
    <ui:composition template="WEB-INF/templates/BasicTemplate.xhtml">
<ui:define name="resultsForm2">
<h:form enctype="multipart/form-data">              
    <p:dataTable var="garbage" value="#{resultsController.allGarbage}"  dynamic="true" paginator="true" paginatorPosition="bottom" rows="10"
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}  {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                     rowsPerPageTemplate="5,10,15" selection="#{resultsController.selectedGarbage}" selectionMode="single"
                      onRowSelectStart="fileDialog.show()">
            <p:column>
                <h:outputText value="#{garbage.filename}"/>
            </p:column>
        </p:dataTable>            
    </h:form>
    <p:dialog widgetVar="fileDialog">
        <h:outputText value="Dialog open"/>
    </p:dialog>   
</ui:define>
   </ui:composition>
</html>

Здесь управляемый компонент:

   @ManagedBean
   @ViewScoped
   public class ResultsController implements Serializable{
@EJB
private ISearchEJB searchEJB;

private Garbage garbage;

private List<Garbage> allGarbage;

private Garbage selectedGarbage;

public List<Garbage> getAllGarbage() {

    allGarbage = new ArrayList<Garbage>();
    for(Garbage g :searchEJB.findAllGarbage()) {
        allGarbage.add(g);
    }
    return allGarbage;
}   

public void setAllGarbage(List<Garbage> allGarbage) {
    this.allGarbage = allGarbage;
}


public Garbage getGarbage() {
    return garbage;
}

public void setGarbage(Garbage garbage) {
    this.garbage = garbage;
}   

public void onRowSelect(SelectEvent event){ 
    garbage = (Garbage)event.getObject(); 
}

public Garbage getSelectedGarbage() {
    return selectedGarbage;
}

public void setSelectedGarbage(Garbage selectedGarbage) {
    this.selectedGarbage = selectedGarbage;
}   

Также обратите внимание, что в выводе я могу видеть значения, нокогда я щелкаю по строке, она окрашивается, но диалоговое окно не появляется (также мне кажется, что я могу щелкнуть более чем по одной строке, это не должно быть так, поскольку я использую selectionMode = "single"): enter image description here

1 Ответ

0 голосов
/ 31 марта 2011

Вы смотрели на это?

http://www.primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf

Вы можете использовать кнопку в нижнем колонтитуле таблицы данных для отправки Действия. Вы должны установить диалог видимым, обрабатывая Действие.

Надеюсь, это немного поможет.

...