<f:view>
 <h:form>
  <h:panelGrid>
   <f:facet name="header">
    <h:outputText value="Create Order"/>
   </f:facet>
   <h:column>
    <h:outputText value="Customer Number : "></h:outputText>
    <h:inputText value="#{SalesCreate.orderBean.customerNumber}"/>
   </h:column>
   <h:column>
    <h:outputText value="Create With : "></h:outputText>
     <h:selectOneMenu id="createWith" value="#{SalesCreate.orderBean.createWith}">
      <f:selectItem itemLabel="Without Reference" itemValue="noRef"/>
      <f:selectItem itemLabel="Reference" itemValue="ref"/>
     </h:selectOneMenu>
    </h:column>
    <h:column>
     <h:outputText value="Reference By : "></h:outputText>
      <h:selectOneMenu id="refBy" value="#{SalesCreate.orderBean.referenceBy}">
       <f:selectItem itemLabel="Quotation" itemValue="quotation"/>
       <f:selectItem itemLabel="Contract" itemValue="contract"/>
      </h:selectOneMenu>
     </h:column>
     <h:column>
     <h:outputText value="Inquiry Reference Number : "></h:outputText>
      <h:inputText id="docNum" value="#{SalesCreate.orderBean.referenceNum}"/>
      <h:commandButton value="..." onclick="javascript:popUp('OpenRef.jsp',this)">
      </h:commandButton>
      <h:commandButton value="Load" action="#{SalesCreate.getQuotationListFromDb}">                  </h:commandButton>
     </h:column>
   </h:panelGrid>
  </h:form>
 </f:view>


上面是我的包含selectOneMenu的JSP,仅当用户在上一个字段中选择referenceBy时,我才尝试启用字段withReference。同样取决于referenceBy的值,弹出窗口中的值也应不同,即,id用户选择referenceBy作为quotation,弹出窗口中的值应与quotation相关。
弹出JSP包含一个带有来自数据库的值的数据表。

最佳答案

在新的JSF 2.0 ajax功能的帮助下,使用<f:ajax>来重新渲染第二个下拉列表,并且当第一个下拉列表的值不是disabled时,使用ref属性禁用第二个下拉列表。 。

<h:selectOneMenu id="createWith" value="#{SalesCreate.orderBean.createWith}">
  <f:selectItem itemLabel="Without Reference" itemValue="noRef"/>
  <f:selectItem itemLabel="Reference" itemValue="ref"/>
  <f:ajax render="refBy" />
</h:selectOneMenu>
...
<h:selectOneMenu id="refBy" value="#{SalesCreate.orderBean.referenceBy}" disabled="#{SalesCreate.orderBean.createWith != 'ref'}">
  <f:selectItem itemLabel="Quotation" itemValue="quotation"/>
  <f:selectItem itemLabel="Contract" itemValue="contract"/>
</h:selectOneMenu>

09-13 11:07