User interface 通过动态填充selectOneMenu中的选项
我正试图在primefaces中的一些下拉菜单中填充内容,这取决于GUI中其他选择的一些选项。这是我试图做的一个简化示例:User interface 通过动态填充selectOneMenu中的选项,user-interface,jsf,primefaces,User Interface,Jsf,Primefaces,我正试图在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"
<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和一个空的SelectOne菜单。我希望selectOneMenu也包含这些选项。迭代显然在上述情况下有效,所以我不知道为什么它不在菜单中显示选项。我做错了什么?是一个UI组件,而像JSTL一样是一个标记处理程序。标记处理程序在视图生成期间运行,而UI组件在视图呈现期间运行。因此,在目前的运行中,没有任何方法可以实现
A也是一个标记处理程序,可以工作:
<p:selectOneMenu id="selectValue"
value="${currentValue}"
class="pFieldSet_Template_Input200 r10">
<p:ajax event="change" />
<c:forEach items="#{options}" var="r">
<f:selectItem itemLabel="Choice #{r} (20180101)" itemValue="#{r}" />
</c:forEach>
</p:selectOneMenu>
是一个UI组件,而像JSTL一样是一个标记处理程序。标记处理程序在视图生成期间运行,而UI组件在视图呈现期间运行。因此,在目前的运行中,没有任何方法可以实现
A也是一个标记处理程序,可以工作:
<p:selectOneMenu id="selectValue"
value="${currentValue}"
class="pFieldSet_Template_Input200 r10">
<p:ajax event="change" />
<c:forEach items="#{options}" var="r">
<f:selectItem itemLabel="Choice #{r} (20180101)" itemValue="#{r}" />
</c:forEach>
</p:selectOneMenu>
为什么不直接使用它呢?如果你不想让它按照@JasperdeVries的建议去做,你应该使用c:foreach来代替它,但这是不太动态的。读吧。如果使用简单的jsf select,同样会失败。因此,它与素数面无关。请始终检查某些通用组件是否也与素数面相关fails@jasper-德弗里斯我不知道你能那样做。在做了一点小动作后,他表现得很有魅力。谢谢。你为什么不简单地使用它呢?如果你不想让它按照@JasperdeVries的建议去做,你应该用c:foreach来代替它,但这是不太动态的。读吧。如果使用简单的jsf select,同样会失败。因此,它与素数面无关。请始终检查某些通用组件是否也与素数面相关fails@jasper-德弗里斯我不知道你能那样做。在做了一点小动作后,他表现得很有魅力。谢谢。可能的副本使它更清楚为什么不工作。谢谢。很多,如果不是大多数,甚至是所有这类问题,在stackoverflow中都有重复的Q/a。不回答这些问题,通常会提及副本。更清楚地说明了为什么它不起作用。谢谢。很多,如果不是大多数,甚至是所有这类问题,在stackoverflow中都有重复的Q/a。不回答这些问题,通常会提及副本。