|
选择类标签可以搭配<f:selectItem>或<f:selectItems>标签来设定选项,例如: <f:selectItem itemLabel="高中"
itemValue="高中" itemDescription="学历" itemDisabled="true"/> itemLabel属性设定显示在网页上的文字,itemValue设定发送至伺服端时的值,itemDescription 设定文字描述,它只作用于一些工具程序,对HTML没有什么影响,itemDisabled设定是否选项是否作用,这些属性也都可以使用JSF Expression Language来绑定至一个值。 <f:selectItem>也可以使用value来绑定一个传回javax.faces.model.SelectItem的方法,例如: <f:selectItem value="#{user.sex}"/>
则绑定的Bean上必须提供下面这个方法: ....
public SelectItem getSex() { return new SelectItem("男"); } .... 如果要一次提供多个选项,则可以使用<f:selectItems>,它的value绑定至一个提供传回SelectItem?的数组、集合,或者是Map对象的方法,例如: <h:selectOneRadio value="#{user.education}">
<f:selectItems value="#{user.educationItems}"/> </h:selectOneRadio><p> 这个例子中<f:selectItems>的value绑定至user.educationItems,其内容如下: ....
private SelectItem[] educationItems; public SelectItem[] getEducationItems() { if(educationItems == null) { educationItems = new SelectItem[3]; educationItems[0] = new SelectItem("高中", "高中"); educationItems[1] = new SelectItem("大学", "大学"); educationItems[2] = new SelectItem("研究所以上", "研究所以上"); } return educationItems; } .... 在这个例子中,SelectItem的第一个建构参数用以设定value,而第二个参数用以设定label,SelectItem还提供有数个构造函数,记得可以引用一下线上API文件。 您也可以提供一个传回Map对象的方法,Map的key-value会分别作为选项的label-value,例如: <h:selectManyCheckbox layout="pageDirection"
value="#{user.preferColors}"> <f:selectItems value="#{user.preferColorItems}"/> </h:selectManyCheckbox><p> 您要提供下面的程序来搭配上面这个例子: ....
private Map preferColorItems; public Map getPreferColorItems() { if(preferColorItems == null) { preferColorItems = new HashMap(); preferColorItems.put("红", "Red"); preferColorItems.put("黄", "Yellow"); preferColorItems.put("蓝", "Blue"); } return preferColorItems; } .... |