Ответ 1
Если вы использовали стандартную аннотацию управления bean JSF bean @ManagedBean
, вы могли бы решить ее, просто разместив bean в области просмотра @ViewScoped
.
@ManagedBean
@ViewScoped
public class ClientNewBackingBean implements Serializable {
@EJB
private ClientFacade facade;
// ...
В CDI @ViewScoped
, однако, не существует, ближайшая альтернатива @ConversationScoped
. Вам нужно только начать и остановить его самостоятельно.
@Named
@ConversationScoped
public class ClientNewBackingBean implements Serializable {
@Inject
private Conversation conversation;
// ...
@PostConstruct
public void init() {
conversation.begin();
}
public String submitAndNavigate() {
// ...
conversation.end();
return "someOtherPage?faces-redirect=true";
}
}
Вы также можете использовать расширение CDI MyFaces CODI, который будет прозрачным образом аннотировать JSF @ViewScoped
для правильной работы вместе с @Named
@Named
@ViewScoped
public class ClientNewBackingBean implements Serializable {
@Inject
private ClientFacade facade;
// ...
Альтернативой CODI является использование @ViewAccessScoped
, который живет до тех пор, пока последующие запросы ссылаются на тот же самый управляемый bean, независимо от используемого файла физического вида.
@Named
@ViewAccessScoped
public class ClientNewBackingBean implements Serializable {
@Inject
private ClientFacade facade;
// ...