2013-07-11 20 views
0

我有t:選擇兩個值 - 通道,小工具。如果我選擇第一個,我將顯示包含所有頻道的調色板並隱藏小部件調色板(在區域中),如果我選擇第二個,我將隱藏頻道調色板區域和顯示小部件調色板區域。這兩個調色板都預選了從數據庫加載的項目。 selectedWidgets,selectedChannels都被註釋爲@Persist。問題是客戶想要刪除選定的小部件,然後切換到渠道並添加它們,所以有兩個操作。如果他然後保存,刪除的小部件仍然存在,並正確添加通道。這是可以解決的嗎?可否在Tapestry 5.3.6中選擇提交調色板值?

+0

我還注意到,從數據庫加載持續持久狀態,而不是實際選定的狀態。 好的,我已經刪除了Persist註解,現在唯一的問題是,我選擇時切換選擇調色板時丟失值。 – MartinC

+0

只是爲了增加,當選擇從值切換到另一個,我做服務器端 – MartinC

回答

1

如果我理解正確,您需要爲表單提交上的兩個調色板保存值。所以這兩個調色板應該出現在表單上。

要解決這個問題,您可以隱藏一個調色板並在選擇值更改時顯示另一個調色板。無需服務器端的操作(並且不需要太區):

<t:select t:id="select" .../> 
<t:palette id="widgets" .../> 
<t:palette id="channels" .../> 

和JS使用jQuery:

var $select = $('#' + selectId); 
var $widgets = $('#' + widgetsId); 
var $channels = $('#' + channelsId); 

$select.on('change', function() { 
    if ($select.val() == 1 /* or another value corespondent to channels */) { 
    $widgets.hide(); 
    $channels.show(); 
    } else { 
    $widgets.show(); 
    $channels.hide(); 
    } 
}); 
+0

兩個區域ajaxResponseRenderer.addRender()感謝sody。基本上,我不僅需要在表單提交後保存值,而且還需要在使用select切換調色板時保留值。這對我不起作用 – MartinC

+0

仍然不明白你需要什麼。如果在選擇值更改後需要將值保存到數據庫,則需要提交表單。或者你可以寫js,它會從url中更新你的區域,並且從調色板選擇值中填充額外的請求參數。 – sody

+0

好的,我會再解釋一遍。讓我們假設堅持是殘疾的。 使用上述元素打開網頁,並從數據庫中預加載所選項目。例如。 2個頻道和3個小工具。最初顯示小部件調色板,預選3個項目,選擇值爲WIDGETS。 然後,我添加2個小部件並切換到CHANNELS。 會發生什麼是: 1.通道是空的,應該有兩個 2.如果我切換回部件,部件也是空的 – MartinC

0

感謝sody,我設法解決這個問題。 第一個主要部分是擺脫區域,只是有一個組件的形式,並提交整個事情一次,第二個主要部分是觸發在適當的時間由索迪提到的JavaScript。 如果我有時間,我會粘貼我的tml,java和javascript代碼,我相信有人會幫我把它清理乾淨。

相關問題