2010-09-15 4 views
1

Я хочу реализовать что-то подобное с помощью JSF (часть поиска экрана) alt textJSF -. Связывание значений компонентов, добавленных динамически

Все больше и больше новых строк будут добавлены динамически OnClick кнопки «+» и строка будет удалена при нажатии кнопки «-». Речь идет о привязке значений (вход пользователя в эти динамически создаваемые строки) к модели резервной копии.

Я создал сеанс, поддерживающий бэк-компонент. Некоторые части кода,

public class BackingBean{ 
    //other code 

    private List<Criteria> searchFilters; // Each criteria is bound to a row 

    public void init(){ 
    //init code 
    } 
    public void addEmptyCriteria(){ 
    searchFilters.add(MyFactory.createNewCriteria()); 
    } 

} 

Действие + кнопки вызывает метод addEmtpyCriteria и повторно выводит (с помощью a4j) весь раздел (с новыми рядами).

Это всего лишь шаблон, и все работает нормально, пока фасоль занята сессией. Но его более интуитивно, чтобы иметь его в области запроса. Один поиск - это единственный запрос, сделанный пользователем, и никоим образом не привязан к сеансу пользователя. Также, имея его в сеансе, заставляет разработчика очищать/удалять backingbean из сеанса inorder, чтобы отобразить новый экран поиска.

Есть ли лучший способ сделать это? Правильно ли иметь его в сеансе?

ответ

1

Когда вы находитесь на JSF 2.0, вы можете просто поместить бит в область view.

@ManagedBean 
@ViewScoped 
public class BackingBean { 
    // ... 
} 

Когда вы все еще на JSF 1.x, то вам лучше всего использует a4j:keepAlive. Сделайте ваш запрос боб и область видимости добавить следующее к странице JSF:

<a4j:keepAlive beanName="managedBeanName" /> 

Если вы не используете Ajax4jsf, то я бы предложил Tomahawk'st:saveState. Это в основном то же самое.

<t:saveState value="#{managedBeanName}" /> 
+0

Это правильно. Боб будет жить до тех пор, пока вы взаимодействуете с одним и тем же представлением (т. Е. Отправляйте в bean-компонент и переходите к тому же представлению). Это не было распространено среди других вкладок/окон в одном сеансе (когда компонент был занят сессией, это было бы). Испытывали ли вы в каком-либо случае его? – BalusC

+0

Извинения. Удалено комментарий случайно. Повторяя это. «Весь код находится в say page1.jsp. Если мне нужно использовать keepalive, мне придется поместить его в page1.jsp. Смысл, этот компонент не будет создан снова. Я пропустил какой-либо пункт здесь?» – chedine

+0

Не удается проверить его сейчас. Я нахожусь на тонком клиенте с доступом в Интернет. Дам вам знать. – chedine

Смежные вопросы