Jsf 当我们触发selectonemenu valueChangeListener事件时,是否可以在selectonemenu组件旁边创建文本框

Jsf 当我们触发selectonemenu valueChangeListener事件时,是否可以在selectonemenu组件旁边创建文本框,jsf,Jsf,想动态创建文本框吗? 选择要运行的报告: <h:selectOneMenu value="#{reportBean.selectReport}"> <f:selectItems value = "#{reportBean.allReports}" /> <f:ajax listener="#{reportBean.getReqID}" render="reqID"> </f:ajax> </h:selectOneMenu>

想动态创建文本框吗?
选择要运行的报告:

<h:selectOneMenu value="#{reportBean.selectReport}">
    <f:selectItems value = "#{reportBean.allReports}" />
    <f:ajax listener="#{reportBean.getReqID}" render="reqID"> </f:ajax>
</h:selectOneMenu>

似乎您希望根据
上的选定值显示/隐藏
。是的,这可以通过简单的JSF轻松实现

请注意,如果使用将
rendered
属性设置为
false
,组件将不会出现在组件树中,因此任何调用(甚至ajax调用)都无法引用该组件。为了更新它,您应该将组件包装到另一个组件中,如
,并呈现包装器。基本示例:

<h:form id="frmRep">
    <h:selectOneMenu value="#{reportBean.selectReport}">
        <f:selectItems value = "#{reportBean.allReports}" />
        <!--
          assuming your reportBean.getReqID method will change the value of
          reportBean.showReqID attribute to render/not render it and works well
        -->
        <f:ajax listener="#{reportBean.getReqID}" render="pnlRepName" />
    </h:selectOneMenu>
    <h:panelGroup id="pnlRepName">
        <h:inputText id="reqID" rendered="#{reportBean.showReqID}"
            value="#{reportBean.reportName}" />
    <h:panelGroup>
</h:form>


对于这个特定的需求,我不建议使用ajax调用,因为它必须到服务器上只检查组件是否应该显示给用户。我会选择一个JavaScript解决方案,在客户端处理这个问题。

您尝试过什么?你能说得更具体些吗?回答这些问题将提高您在Stackoverflow上获得良好响应的机会。每次创建新文本框?