【问题标题】:JSF: Default selection of all values in <h:selectManyListbox/>JSF:默认选择 <h:selectManyListbox/> 中的所有值
【发布时间】:2014-08-09 18:50:18
【问题描述】:

我正在使用 jsf 2.0。从基于用户选择的 rich:popup 我正在使用 AJAX 将值添加到 h:selectManyListbox 然后我重新渲染封闭的 outputPanel 以显示绑定列表中的值。我能够成功地做到这一点。现在我希望默认情况下应该选择 selectedManyListbox 中存在的所有值,这样用户就不会再次选择它。

selectManyListBox 的代码:

    <a4j:outputPanel id="groupTablePanel">
                    <h:selectManyListbox size="3" style="width:190px; height:100px;"
                        id="table" value="#{userCreateBean.selectedGroups}">
                        <f:selectItems value="#{userCreateBean.assignedGroups}"></f:selectItems>
                    </h:selectManyListbox>
    </a4j:outputPanel>

我探索了相同的文档,我什至尝试编写自己的 javascript 代码。 查看 firebug,我无法在 selectManyListbox 中看到所选值的关联类。同样的 onChange 事件只有在我们手动进行任何更改或单击它时才会执行。所以我想知道哪种活动适合这种要求? 请指导我如何实现此功能。 提前致谢。

【问题讨论】:

  • 我想太多了,最后结果很简单。这个javascript方法帮助我解决了同样的问题。 function defaultUsersSelect(id){ var select = document.getElementById(id); for (var i = 0; i &lt; select.length; i++){ select.options[i].setAttribute("selected","selected"); } }

标签: java javascript jakarta-ee jsf-2


【解决方案1】:

我想太多了,最后结果很容易。这个 javascript 方法帮我解决了同样的问题。

function defaultUsersSelect(id){  
  var select = document.getElementById(id);
  for (var i = 0; i < select.length; i++){
   select.options[i].setAttribute("selected","selected");
  }
}

【讨论】:

  • 不幸的是,您没有以正确的方式做到这一点,即在初始化支持 bean 时简单地使用您希望默认选择的所有值填充 selectedGroups 列表。您现在已经介绍了一个手动 javascript hack 来解决这个问题。
  • @Gimby 是的,您是正确的,您能否建议我更好的解决方案。谢谢。
  • 您对包含更好解决方案的评论要求“给我一个更好的解决方案”。你真正想要的是代码。我不会花时间制作已经展示了数百次的东西,一个简单的谷歌“javaserver faces selectManyListBox preselect”出现了这个现有问题,例如:stackoverflow.com/questions/6650327/…
  • @Gimby - 评论显示你是多么优秀的绅士。我从来没有要求任何代码。而且你甚至没有理解我的问题。但我尊重您的意见,感谢您花时间阅读我的问题。
猜你喜欢
  • 2013-11-30
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多