<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>
上面是我的JSP,其中包含selectOneMenu
,我只是在用户在上一个字段中选择referenceBy
时尝试启用字段withReference
。同样取决于referenceBy
的值,弹出窗口中的值应该不同,即ID用户选择referenceBy
为quotation
,弹出窗口中的值应与quotation
相关联。
弹出JSP包含一个包含数据库值的数据表。
答案 0 :(得分:2)
使用<f:ajax>
在新JSF 2.0 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>