<h:form> <h:selectOneMenu value="#{someAction.choise}"> <f:selectItem itemLabel="a" itemValue="123"/> <f:selectItem itemLabel="b" itemValue="456"/> </h:selectOneMenu> </h:form>
上面的代碼最后到客戶端是一個下拉框,客戶選擇某一個選項,最后表單提交的時候,所選值被設置到someAction的choise屬性上。可以嘗試用firebug或者其他的瀏覽器工具在客戶端自己添加一個option,給一個原本沒有的值,然后提交。你會發現JSF會發現提交的值不再備選列表中,于是拋出異常。JSF的頁面是組件化的,后端程序在運行過程中能夠知道前端頁面上有些什么東西,于是可以自動的去校驗。
校驗是一個很典型的例子,但在此之外,知道前端的狀態還有很多其他的妙用。例如當一個表單提交的時候,你可以很輕易的知道一個輸入框的原始值。
<h:form> <h:selectOneMenu value="#{someAction.choise}"> <jsf:selectItems value="#{someAction.options}" var="o" label="#{o}"/> </h:selectOneMenu> </h:form>