Как изменить значение компонента сеанса из компонента запроса?

#java #jsf #jsf-1.2

#java #jsf #jsf-1.2

Вопрос:

У меня есть компонент сеанса, FooSessionBean который имеет логическое свойство: visible .

Я хочу изменить значение visible свойства из моего FooRequestBean. Есть ли какой-либо способ сделать это, кроме изменения области FooRequestBean на session вместо request (чтобы иметь возможность вводить FooSessionBean в my FooRequestBean )?

Заранее спасибо.

PS: Я использую JSF 1.2

Комментарии:

1. кроме изменения области FooRequestBean на session вместо request (чтобы иметь возможность внедрить FooSessionBean в мой FooRequestBean)? почему вы думаете, что невозможно внедрить компонент с областью сеанса в компонент с областью запроса? Это должно работать отлично. С какими именно проблемами вы сталкиваетесь при этом?

Ответ №1:

Создайте FooSessionBean свойство (getter / setter) в FooRequestBean и внедрите его с помощью faces-config.xml :

 <managed-bean>
  <managed-bean-name>fooRequestBeanName</managed-bean-name>
  <managed-bean-class>foo.FooRequestBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
    <property-name>fooSessionBeanPropName</property-name>
    <property-class>foo.FooSessionBean</property-class>
    <value>#{sessionScope.fooSessionBeanName}</value> 
  </managed-property>
 //etc
  

Комментарии:

1. Круто, это работает :)… Я думал, что я не могу внедрить компонент сеанса в компонент запроса, а только наоборот…

2. @Christian — вы можете вводить из широкой области в более узкую; вы просто не можете вводить из узкой области в более широкую.