一、现用selectonemenu实现多极联动下拉框
功能是类似这样的第一个下拉框显示国家名
第二个下拉框显示省名
第三个下拉框显示市名
改变国家名时 省名和市名都变化
改变省名时 市名变化
将selectonemenu的immediate属性设为true时,只考虑这三个下拉框可以达到目的
但是其他的带有提交动作immediate属性为false的组件必须提交两次行
第一次会先执行下拉框的valuechange事件,然后就会直接跳到响应阶段
第二次则不会执行valuechange事件 原因不明
如果不将selectonemenu的immediate属性设为true
改变国家名后,省名的valuechange事件也会执行,而且value值还被设成了以前的值 市名就又变回原来的列表值了
哪位大侠知道怎么解决
二、 <h:selectonemenu id="selectCar" value="#{form.name}"></h:selectonemenu>
<f:selectitems value="#{form.curlist}"></f:selectitems>
怎样从java中获得一个集合对象来填充这个下拉列表
解决: public List getCurlist() {
List curlist = new ArrayList();
curlist.add(new SelectItem("1","aaa"));
curlist.add(new SelectItem("2","bbb"));
curlist.add(new SelectItem("3","ccc"));
<o:p> </o:p>
return curlist;
}
三、一个下拉框触发一个onchang事件。将页面重定向到另一个叶面
public String changText(ValueChangeEvent event)
{
FacesContext fcontext = FacesContext.getCurrentInstance();
String str = event.getNewValue().toString();
loginfo.info("name:"+str);
if(str.equals("1"))
return "showInformation"; //重顶向没有起到作用
else
return "success";
}
四、required="true" 与 immediate="true"区别 在每个录入框中加入。页面调用默认的验证方式
一个事件的基本流程:重建试图、套用请求值、执行验证、更新模型值、唤起应用程序、绘制响应页面
<o:p> </o:p>
immediate="true:组件在套用请求值后进行处理,并跳过后续的阶段。直接进行页面绘制以响应请求,
他将指定的事件成为即时事件
<code>
<tr>
<td><h:outputText value="#{msgs.namePrompt}" /></td>
<td><h:inputSecret value="#{user.password}" required="true">
<f:validator validatorId="onlyfun.caterpillar.Password" />
<f:attribute name="pattern" value=".+[0-9]+" />
</h:inputSecret>
<p>
</td>
</tr>
</code>
<h:outputtext value="#{msgs.namePrompt}"></h:outputtext>
<h:inputsecret value="#{user.password}" required="true"></h:inputsecret>
<f:validator validatorid="onlyfun.caterpillar.Password"></f:validator>
<f:attribute name="pattern" value=".+[0-9]+"></f:attribute>