2013-01-31 16 views
11

Używałem Ui: repeat do generowania tabel. Dzięki ui: powtórz, łatwo można uzyskać wiersze ponumerowane przy użyciu varStatus. Jestem zależny od identyfikatora wiersza od varStatus podczas wywoływania komponentu bean pomocniczej do obsługi nawigacji po liście, na przykład przenoszenia elementu w górę lub w dół na liście.JSF 2 dataTable indeks wiersza bez DataModel

Teraz chciałbym stworzyć komponent złożony, który tworzy dostosowywalną tabelę ze wszystkimi funkcjami potrzebnymi do zaznaczania wierszy, przesuwania ich w górę/w dół itp. Aby to zrobić, funkcja Ui: repeat nie będzie działać tak jak ja ". t zobaczyć sposób obsługi różnej liczby kolumn; Muszę podać nagłówki w jednym miejscu, a ciało w innym (i nie dotarłem do punktu wiedzy, w którym mogę utworzyć komponent niestandardowy). Dlatego zamiast tego przeszedłem do datatable, ponieważ użycie tego oznacza określenie nagłówków jako aspektów w tym samym miejscu, co zawartość treści.

To zadziałało dobrze, dopóki nie zauważyłem, że z jakiegoś powodu nie było już varStatus. Włożyłem wiele pracy w obsługę prezentacji list bez potrzeby używania datamodel i nie chcę tego używać. Czy istnieje sposób, aby uzyskać bieżący numer wiersza, tak jak jest on wyświetlany w tabeli, bez korzystania z datamodel?

Używam również viewScope i jeśli dobrze zrozumiałem, oznacza to, że nie mogę powiązać tabeli dataTable z komponentem bean.

Odpowiedz

28

Wystarczy połączyć tabelę z samym widokiem, a nie z komponentem bean.

<h:dataTable binding="#{table}" ...> 

Następnie można użyć #{table.rowIndex} gdzie to konieczne. Na przykład.

+1

Przeczytałem kolejny wpis, w którym miałeś to jako rozwiązanie, chociaż myślałem, że binding = "# {table}" był skrótem do wiązania z fasolą. Nie wiedziałem, że to możliwe. Dziękuję BalusC! – nivis

+0

Nie ma za co. – BalusC

+0

Myślałem dokładnie tak samo, jak @nivis. Może dlatego, że wartość atrybutu "var" NIE wymaga instrukcji EL, ale wartość atrybutu "binding" DOES. Uznałem, że jakiekolwiek nazwane wartości wewnątrz instrukcji EL powinny już być zadeklarowane (osobiście) i czułem, że nadawanie zmiennej pewnej nazwy (np. 'Table',' rowItem') NIE powinno się odbywać z instrukcjami EL. –

Powiązane problemy