2016-07-21 8 views
0

Meine Bohne mitkommentierte Frühlings-Session-Bean in JSP accesing

@Component("Person") 
@Scope(value="session", proxyMode = ScopedProxyMode.TARGET_CLASS) 

kommentierte ist habe ich einige Getter und Setter, aber die, die ich interessiert bin, ist

@Transient 
    private ArrayList<DummyProduct> products = new ArrayList<DummyProduct>(); 

    public ArrayList<DummyProduct> getProducts() { 
     return products; 
    } 

    public void setProducts(ArrayList<DummyProduct> products) { 
     this.products = products; 
    } 

Da ist in meinem JSP zu erhalten in meiner Steuerung füge ich Produkte zu dieser Liste hinzu

Dann in meiner JSP versuchte ich, ohne Glück, um die Produkte zu bekommen:

<table id="cart_table" border="1"> 
<tr> 
    <th>Product</th> 
</tr> 
<c:forEach var="prd" items="${sessionScope.Person.products}" > 
<tr> 
<td>${prd.productName}</td> 
</tr> 
</c:forEach> 
</table> 

Ich habe auch die folgende Eigenschaft, so dass meine Bohnen jsps ausgesetzt sind: <beans:property name="exposeContextBeansAsAttributes"

<beans:bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <beans:property name="prefix" value="/WEB-INF/views/" /> 
      <beans:property name="suffix" value=".jsp" /> 
      <beans:property name="exposeContextBeansAsAttributes" value="true" /> 

EDIT: Der Regler:

@org.springframework.stereotype.Controller 
public class Controller { 

@RequestMapping(value= "/addProduct", method = RequestMethod.POST) 
    public String addProduct(HttpServletRequest request, Map<String, Object> model, @RequestParam String product){ 
     DummyProduct prod = new DummyProduct(product); 
     this.person.getProducts().add(prod); 
     return "loggedIn"; 
    } 

} 

Tabelle ist immer leer. Ich habe debugged und ich sah, dass in meiner Person Bean die Produktliste ausgefüllt ist.

+0

Haben Sie die Bohne versucht, den Zugriff ohne die 'scessionScope', bevor es? – nfechner

+0

@nfechner Ich habe versucht, jetzt aber nicht funktioniert :( –

+0

können wir Ihre Controller-Klasse –

Antwort

1

Das Problem hängt damit zusammen, wie Sie auf das Sitzungsattribut zugreifen.

Änderung dieser

AKTUALISIERT

@Controller 
@SessionAttributes("person") 

Sie können ein Beispiel finden here

+0

Es ist eigentlich @Controller @SessionAttributes ("Person") Ich benutze immer den Controller als Singleton :) –

+0

@ Marius-CristianDragan Thanks! gerade mit deinem Kommentar bearbeitet – cralfaro