0

我有 t:select 有两个值 - CHANNELS,WIDGETS。如果我选择第一个,我将显示所有通道的调色板并隐藏小部件调色板(都在区域中),如果我选择第二个,我将隐藏通道调色板区域并显示小部件调色板区域。两个调色板都预先选择了从数据库加载的项目。selectedWidgets, selectedChannels 都被注解为@Persist。问题是客户想删除选定的小部件,然后切换到渠道并添加它们,所以两个操作。如果他随后保存,已删除的小部件仍然存在,并且频道已正确添加。这有可能解决吗?

4

2 回答 2

1

如果我理解正确,您需要在提交表单时保存两个调色板的值。所以两个调色板都应该出现在表单上。

要解决这个问题,您可以隐藏一个调色板并在选择值更改时显示另一个。不需要服务器端操作(也不需要区域):

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

和使用jquery的js:

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();
  }
});
于 2013-07-11T12:45:06.083 回答
0

感谢sody,我设法解决了这个问题。第一个主要部分是摆脱区域,只是有一个带有组件的表单并提交一次整个事情,第二个主要部分是在正确的时间触发 sody 提到的 javascript。如果我有时间,我会粘贴我的 tml、java 和 javascript 代码,我相信有人会帮我清理它。

于 2013-07-14T22:30:07.010 回答