【发布时间】:2019-04-15 10:43:02
【问题描述】:
我正在尝试在 primefaces 中填充一些下拉菜单,其内容取决于 GUI 中其他选项的一些选项。这是我正在尝试做的一个简化示例:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" >
<h:head>
<title>Test</title>
</h:head>
<h:body>
<h:form>
<c:set var="options" value="#{['1','2','3']}" />
<c:set var="currentValue" value="#{3}" />
<h:outputText value="${options}" />
<ui:repeat var="r" value="#{options}">
<h:outputText value="#{r}" />
</ui:repeat>
<c:set var="currentValue" value="#{currentValue}" />
<p:selectOneMenu id="selectValue"
value="${currentValue}"
class="pFieldSet_Template_Input200 r10">
<p:ajax event="change" />
<ui:repeat var="r" value="#{options}">
<f:selectItem itemLabel="Choice #{r} (20180101)" itemValue="#{r}" />
</ui:repeat>
</p:selectOneMenu>
</h:form>
</h:body>
</html>
当我访问该页面时,它显示 [1, 2, 3]123 和一个空的 selectOneMenu。我本来希望 selectOneMenu 也包含选项。迭代显然在上述情况下有效,所以我不知道为什么它不显示菜单中的选项。我做错了什么?
【问题讨论】:
-
为什么不直接使用
<f:selectItems value="#{options}" var="r" .../>? -
如果你不希望它像@JasperdeVries 建议的那样做,你应该改用
c:foreach,但这不太动态。然后阅读stackoverflow.com/questions/3342984/…。使用普通的 jsf 选择也会失败。所以它与 PrimeFaces 无关(总是检查某些通用组件是否也失败) -
@jasper-de-vries 我不知道你可以这样做。经过一番摆弄后,它就像一个魅力一样工作。谢谢。
标签: user-interface jsf primefaces