2010-08-26 34 views
1

我正在使用jquery/jsp/java ejb3.0/sql server。複選框表示多對多數據庫關係;從webform到數據庫的最佳方式

用戶界面要求(一個jsp頁面)是一個複選框網格,約10行高,最多約30行寬(這有所不同),它表示多對多表關係的鏈接器表。

複選框將從數據庫中填充(如果行存在於鏈接器表中,則複選框被選中)。

然後用戶可以選擇/取消選中任意一次,儘可能多次。提交任何更改應保存到數據庫。 這些更改將包括刪除行(如果未選中(如果選中/行存在之前),並且插入行(如果選中)(未選中/之前沒有行存在)。

我的問題是,實現這個最好的方法是什麼?使用ajax更新數據庫使用複選框onchange事件是不合適的。我希望它是一個提交表單事件。

+0

「30行寬」沒有意義。你的意思是〜10行高x〜30列寬?如果是這樣,那麼每一行/列中的項目是否有相互之間的任何關係,或者網格佈置是純粹的表示? – barrowc 2010-08-26 22:24:54

回答

1

我試圖通過退後一步並引入一個簡單的bean來表示「元數據」 - 即300或者更多的真/假值來解決這種情況。

實際上,在處理那麼多領域時,你可能會使用一個母豆,其中包含將概念上相關的字段放在一起的子bean。例如: -

public class MotherBean { 
    private UserSettingBean userSettingBean; 
    private UserRelationshipBean userRelationshipBean; 
    private UserPreferencesBean userPreferencesBean; 
    ... 
} 

所以你的「Web層」成爲了MotherBean一個簡單的CRUD控制器;那種每天都會做的事情。你甚至可以使用像Spring Roo這樣的東西來搭建腳手架。然後,當您將該bean傳遞到您的較低層(您可能在此設計中可能有或沒有傳統的「服務」或「業務邏輯」層)時,就會有一個DAO來轉換關係元數據導入實際多對多關係。考慮到我們正在討論的領域的數量,我再次建議將這項工作委託給處理相關鏈接的子DAO(爲了更好的術語)。

很明顯,「get」路徑是相反的。您詢問MotherBeanDAO以獲取與用戶1234相關的元數據,它會爲子bean請求其代理DAO,將它們包裝起來並將結果MotherBean一直傳遞到Web前端。

相關問題