Jsf 单击p:inplace后自动打开SelectOne菜单

Jsf 单击p:inplace后自动打开SelectOne菜单,jsf,primefaces,selectonemenu,Jsf,Primefaces,Selectonemenu,我使用Primefaces p:inplace,这样当单击一些文本时,它会被一个h:selectOneMenu替换,用户可以从那里打开菜单并从下拉选项中选择一个选项。如果当我单击p:inplace元素时,出现的selectOneMenu已经被激活,其下拉选项显示出来,就好像用户单击了它一样,这将有助于减轻额外的单击。我在谷歌上搜索了这篇文章,但毫无结果,我想知道,即使使用JavaScript,是否真的有可能做到这一点。如果需要,我也可以使用p:selectOneMenu或selectOneLis

我使用Primefaces p:inplace,这样当单击一些文本时,它会被一个h:selectOneMenu替换,用户可以从那里打开菜单并从下拉选项中选择一个选项。如果当我单击p:inplace元素时,出现的selectOneMenu已经被激活,其下拉选项显示出来,就好像用户单击了它一样,这将有助于减轻额外的单击。我在谷歌上搜索了这篇文章,但毫无结果,我想知道,即使使用JavaScript,是否真的有可能做到这一点。如果需要,我也可以使用p:selectOneMenu或selectOneListbox,但这似乎没有什么帮助。

正如您所说,您可以使用selectOneListbox,特别是如果您只有很少的选项,那么在p:inplace中就可以正常工作。我从来没有听说过这样的请求,我认为这都是关于浏览器的,关于自动扩展可能有一些限制

但您可以做一件让您满意的事情:删除默认选项,如:

<f:selectItem itemLabel="Select..." itemValue=""/>

然后做一些研究,找出选择最多的选项,并将该选项作为默认/首选选项。因此,大多数人甚至不必展开“选择”菜单。

我今天发现了类似的堆栈溢出问题,不知道我最初是怎么错过的:


看起来我们的担心是对的,没有办法打开下拉列表本身,但是CSS和修改元素的组合可能会给我我想要的结果。谢谢

我很感激你的建议,但我已经这么做了。这些p:inplace和h:selectOneMenu标记位于表中的单元格内,当动态创建列时,selectOneMenu被赋予默认值。这也是我使用selectOneMenus而不是SelectOneListBox的原因。当p:inplace被触发时,表格单元格将大大扩展行。