2015-08-15 11 views
6

Możemy ustawić atrybuty żądań przy użyciu obiektu Model lub ModelAndView na wiosnę.Jak dodać obiekt do zakresu zastosowania wiosną

Możemy użyć @SessionAttributes, aby zachować atrybuty w zakresie sesji.

Więc jak mogę dodać atrybut w zakresie application na wiosnę, czy wiosna dostarczyła jakąś adnotację?

Odpowiedz

8

W zasadzie wszystko, co jest potrzebne, aby skonfigurować zakres stosowania jest wykorzystanie ServletContext, a można to zrobić na wiosnę, co następuje:

public class MyBean implements ServletContextAware { 

    private ServletContext servletContext; 

    public void setServletContext(ServletContext servletContext) { 
     this.servletContext = servletContext; 
    } 

} 

javax.servlet.ServletContext może być nawet wstrzykuje do realizacji fasoli następująco:

+0

dzięki dużo Francisco, zgodnie z dokumentacją wiosennej dla @SessionAttributes - http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/SessionAttributes.html, wydaje się, że jest pewne ograniczenie, czy możesz mi powiedzieć jakie jest ograniczenia i jak się różni od zwykłych atrybutów sesji. Jaki jest prawidłowy sposób przechowywania w zakresie sesji? proszę dać mi znać, jeśli chcę utworzyć osobne pytanie dla tego zapytania. – Chaitanya

+0

Nie ma za co. Nie dostałem twojego pytania, co masz na myśli z ograniczeniem? –

+0

Zamieść osobne pytanie z pełnymi szczegółami na temat problemu z sesją, Wielkie dzięki za pomoc. – Chaitanya

1

Kiedy wspominasz o przechowywaniu swojego modelu w zakresie aplikacji, chciałbym zakończyć, że chcesz go zapisać na poziomie ServletContext. Aby to zrobić, musisz sprawić, aby kontroler implementował interfejs ServletContextAware.

import org.springframework.web.context.ServletContextAware; 

// ... 

public class MyController implements ServletContextAware { 

private ServletContext context; 
    public void setServletContext(ServletContext servletContext) { 
    this.context = servletContext; 
    } 

Po uzyskaniu dostępu do ServletContext można dodać go jako atrybut

servletContext.setAttribute("modelKey", modelObject); 

prosimy daj mi znać, jeśli to jest to, czego szukasz.

0

Na wiosnę można uzyskać zakres aplikacji za pomocą @Autowired adnotacji

@Autowired 
private ServletContext servletContext; 

Następnie można dostępu, którego elementu przy użyciu metody .getAttribute

Object someObj = servletContext.getAttribute("object",someObj); 
if(someObj==null) 
someObj = new Object(); //This will create new Object if it doesn't exists. 
servletContext.setAttribute("object",someObj);