JSF 2: какую область я должен использовать? - PullRequest
3 голосов
/ 08 декабря 2010

Я не знаю, какую область использовать.

Здесь у меня есть модуль, который состоит из 4-х уровней страниц, таких как просмотр страниц - заголовок страницы - подробности страницы этого заголовка - подробности страницы этой детали.Я думаю, что каждая страница будет иметь свою собственную управляемую страницу.

Самый глубокий уровень, уровень 4 (страница дополнительной информации), сможет получить доступ к состоянию любого другого управляемого объекта на внешнем уровне.Уровень 3 (страница сведений) может иметь доступ к состоянию управляемого объекта уровня 2 (страница заголовка) и состоянию управляемого объекта уровня 1 (просмотр).

Внешние управляемые бобы не смогут получить доступ к состоянию более глубокого управляемого боба

Использование области запроса не подходит, поскольку страницам глубокого уровня требуется доступ к другому состоянию на внешних уровнях.

Использование области действия сеанса будет полезно, но потребляет память, когда пользователь переключается на другие не связанные программные модули, и эти неиспользуемые компоненты будут оставаться в памяти в течение всего сеанса.И, кроме того, я не могу открыть эти цепочки страниц на разных вкладках.

Использование области диалога также сбивает меня с толку, поскольку у меня нет четкого начала () и конца (), как на страницах в стиле мастера, или викториныстраницы.Пользователь может переключаться обратно с этими страницами и выполнять действия на любой странице.

Использование области видимости представляется возможным, но я должен использовать параметр, передаваемый с одной страницы на другую.Бины более глубокого уровня не смогут получить доступ к внешним бинам, но они могут получить строковые параметры с предыдущей страницы.Это довольно уродливо, потому что мне, возможно, придется снова запросить в базе данных много информации, которая могла бы быть сделана в предыдущем управляемом компоненте.

Неужели я не так думаю?

Пожалуйста, поделитесь своими мыслями.

Спасибо,
Альберт Кам

1 Ответ

3 голосов
/ 14 января 2011

Новая область применения Flash в JSF 2 может вам помочь.Думайте об этом как о области действия сеанса, которая очищается после однократного чтения.Это немного отличается от других областей тем, что это не аннотация, а карта.Вы можете поместить всю информацию со страницы 1, которая требуется странице 2, в область видимости флэш-памяти, прочитать ее с помощью метода аннотирования PostConstruct на странице 2, затем ввести все данные, необходимые для страницы 3, и так далее.Немного грязно, но по крайней мере вам не нужно будет использовать параметры просмотра.Фактически управляемые bean-компоненты могут быть Requestscoped.Это будет выглядеть примерно так:

Level1Bean

@public String toLevel2Button(){
    ELFlash.getFlash().put("data1", object1);
    ELFlash.getFlash().put("data2", object2);
    return "level2";

Level2Bean

@PostConstruct
public void init(){
    object1 = (MyType1)ELFlash.getFlash().get("data1");
    object2 = (MyType2)ELFlash.getFlash().get("data2");
}

public String toLevel3(){
    ELFlash.getFlash().put("data1", object1);
    ELFlash.getFlash().put("data2", object2);
    ELFlash.getFlash().put("data3", object3);
    return "level3";
}

Вы можете найти краткий пример здесь .Объем флеш-памяти можно прочитать непосредственно из View aswell.Кроме того, я не могу придумать способ передачи данных между представлениями без использования параметров представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...