2015-09-22 9 views
1

Я использую Mojarra 2.2.12. У меня есть случай, когда @ViewScoped@ManagedBean сразу же уничтожается при загрузке страницы, хотя представление не заканчивается. Проблема в том, воспроизводимые с исключительно ниже <h:body>:@ViewScoped @ManagedBean уничтожен при использовании <h: link includeViewParams = "true">

<h:outputText value="#{testBean.value}" /> 
<h:link outcome="other" includeViewParams="true">link</h:link> 

other должен ссылаться на другую точку зрения, а не ту же точку зрения. Нет необходимости в <f:viewParam>, чтобы воспроизвести проблему.

И ниже боб:

import javax.annotation.PostConstruct; 
import javax.annotation.PreDestroy; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

@ManagedBean 
@ViewScoped 
public class TestBean implements Serializable { 

    @PostConstruct 
    public void init() { 
     System.out.println("@PostConstruct on " + this); 
    } 

    @PreDestroy 
    public void clear() { 
     System.out.println("@PreDestroy on " + this); 
    } 

    public String getValue() { 
     return "test"; 
    } 

} 

Если удалить includeViewParams="true" атрибут, то боб не сразу destroyed.Why делает includeViewParams="true" причину такого поведения?

+0

Вы хотите сказать, что он разрушен при загрузке страницы или только при нажатии ссылки? – BalusC

+0

Боб уничтожается при загрузке страницы. – jpl

+0

Невозможно воспроизвести его на основе предоставленной информации. – BalusC

ответ

0

Добавьте эту зависимость в pom.xml, я прошел ее.

<dependency> 
    <groupId>javax.enterprise</groupId> 
    <artifactId>cdi-api</artifactId> 
    <version>1.2</version> 
</dependency> 
+0

Прочтите комментарии: _ «@ B ... c, я не могу использовать CDI, потому что проект основан на интеграции Spring и CDI/spring, не является тривиальным. Является ли это ошибкой или нормальным functionnality? "_ – Kukeltje