2010-07-31 64 views
0

我已經作出了從像:缺省初始化形成

MyForm extend ActionForm{ 

    list<Menu> MenuList=null; 

    MyForm(){ 

    super(); 

    setMenuList(); //initialize menu list 

    } 

} 

菜單對象有字串應將描述和布爾變量對選定的或沒有。

在網頁中,我正在迭代列表以顯示所有菜單和複選框以覆蓋這些布爾變量。但是,每次我想要訪問選定的項目時,列表都會設置爲默認值。那是因爲構造函數,我已經定義了嗎? 請幫我個夥?有沒有其他的方式來初始化變量,我也嘗試初始化它的getter函數列表,但它給了我一個空指針異常。我甚至無法理解爲什麼會這樣。

回答

1

查看Prepare interceptor。它允許當調用一個動作,發生之前的任何其他動作邏輯您自動調用prepare方法:

public class MyForm extend ActionForm implement Preparable { 

    list<Menu> MenuList=null; 

    prepareView(){ 
     // initialize your menu list 
     List yourMenu = new ArrayList(); 
     yourMenu.add("foo"); 
     yourMenu.add("bar"); 
     setMenuList(yourMenu); 
    } 

    view(){ 
     return INPUT; 
    } 
} 

在上述示例中,當調用MyForm的的視圖()方法,prepareView()將被首先調用,設置菜單並準備好在您的INPUT上使用。

您可能還想考慮在會話期間將yourMenu添加到會話中,以便在您遇到驗證錯誤時它仍然可用。

+0

感謝帕特,它真的是一個非常有用的信息。 – 2010-08-02 17:18:15