2011-03-24 62 views

回答

4

Anshul,

你有一些正確的東西在你的implementation.For Struts2中,我們可以看到它在下列方式

  1. ValueStack的
  2. OGNL

值棧是一個虛擬的堆棧在Struts2框架和一箇中心位置,所有與請求處理相關的數據將由Framework放置。在Struts2中,Action也被視爲一個數據載體,所以到底發生了什麼事情是什麼時候行動完成了它的工作,它被放在價值堆棧的頂端。

讓我們有這樣的事情在行動

public class MyAction extends ActionSupport{ 

    private String firstname; 
    private String lastname; 

    public void setFirstName(firstname){ 
    this.firstname=firstname 
    } 

public void setLastName(lastname){ 
    this.lastname=lastname 
    } 

public String getFirstName(){ 
    return firstname; 
} 

public String geLastName(){ 
    return lastname; 
} 

public String execute() throws Exception{ 
      //action logic filling first name and last name from database etc. 
      return SUCCESS; 
} 
} 

現在當行動將邏輯框架後返回將放置操作實例價值棧和firstnamelastname的頂部將在它的頂部。

so now when we try to access these values in jsp something like 
<s:textfield name="firstname" value= "%{firstname}"/> 

這裏(%{firstname}) OGNL將進來的地方,它會嘗試看看是否有與名稱firstname值棧的屬性,因爲行動是價值堆棧的頂部,並在它的屬性名稱firstname所以OGNL會找到它。

我希望這會幫助你

+0

感謝您給我更多關於價值堆棧的想法。但有時當我使用OGNL表達式時,它不會打印值堆棧的值。像這在某些情況下不起作用,並且它通過使用 Anshul 2011-03-24 09:03:55

+0

是的!默認情況下值是放在值棧上,但你可以把值放在session,attribute等中,這樣如果值沒有存儲在值棧中但是屬性den value =「%{firstname}」/>將不起作用,因爲它只是解決價值堆棧,所以我們需要告訴OGNL在哪裏嘗試找到valuestack旁邊的數據值。希望它會給你想法 – 2011-03-24 09:09:58

相關問題