valueChangeListener使用注意事项
2009-06-28 13:43
441 查看
运行健康的示例。页面代码
categoryChanged方法源码为
这是一个valueChangeListener可以正常运行的情况,其中有两点要注意:
1、<h:selectOneMenu /> 标签中 immediate="true" 不可少。如果缺少该属性则会出现当第一次触发该事件时程序可以正常使用,但当第二次触发时会报
2、在监听方法 categoryChanged 中 context.renderResponse(); 不能少,如果少了该方法,虽然可以成功触发监听时间,但程序后台会有如下警告
将<h:messages globalOnly="true"></h:messages>的globalOnly属性更改为false上述警告消失,但在页面上会打印event1Form:j_id_jsp_1462394538_5: Validation Error: Value is not valid
<f:view> <h:form id="event1Form"> <h3>请选择课程类别</h3> <table> <tr> <td>课程类别:</td> <td><h:selectOneMenu value="#{course.category}" onchange="submit()" valueChangeListener="#{course.categoryChanged}" immediate="true"> <f:selectItem itemValue="null" itemLabel="--choose--" /> <f:selectItems value="#{course.categoies}" /> </h:selectOneMenu></td> </tr> <tr> <td>课程:</td> <td><h:selectOneMenu value="#{course.course}"> <f:selectItems value="#{course.courses}" /> </h:selectOneMenu></td> </tr> </table> </h:form> <h:messages globalOnly="true"></h:messages> </f:view>
categoryChanged方法源码为
public void categoryChanged(ValueChangeEvent event) { FacesContext context = FacesContext.getCurrentInstance(); if ("language".equals((String) event.getNewValue())) { courses.clear(); for (int i = 0; i < courseNames[0].length; ++i) { courses.add(new SelectItem(courseNames[0][i])); } } else if ("datebase".equals((String) event.getNewValue())) { courses.clear(); for (int i = 0; i < courseNames[1].length; ++i) { courses.add(new SelectItem(courseNames[1][i])); } } else { courses.clear(); } context.renderResponse(); }
这是一个valueChangeListener可以正常运行的情况,其中有两点要注意:
1、<h:selectOneMenu /> 标签中 immediate="true" 不可少。如果缺少该属性则会出现当第一次触发该事件时程序可以正常使用,但当第二次触发时会报
严重: JSF1054: (Phase ID: PROCESS_VALIDATIONS 3, View ID: /actionEvent/event1.jsp) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@32bd65] 2009-6-28 13:47:42 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet Faces Servlet threw exception java.util.NoSuchElementException at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:130) at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:157) at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:61)
2、在监听方法 categoryChanged 中 context.renderResponse(); 不能少,如果少了该方法,虽然可以成功触发监听时间,但程序后台会有如下警告
信息: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed. sourceId=event1Form:j_id_jsp_1462394538_5[severity=(ERROR 2), summary=(event1Form:j_id_jsp_1462394538_5: Validation Error: Value is not valid), detail=(event1Form:j_id_jsp_1462394538_5: Validation Error: Value is not valid)]
将<h:messages globalOnly="true"></h:messages>的globalOnly属性更改为false上述警告消失,但在页面上会打印event1Form:j_id_jsp_1462394538_5: Validation Error: Value is not valid
相关文章推荐
- AbsListView.OnScrollListener 使用注意事项
- JQuery选择器之[attribute^=value]使用注意事项
- ComboBox与DataGridView联合使用、ComboBox的SelectedIndexChanged和SelectionChangeCommitted事件的注意事项
- slider控件设置value时使用 slider1_ValueChanged 事件注意事项
- 上传文件到服务器方式之一:使用InputFile的ValueChangeListener
- Ansj标准分词使用注意事项(MyStaticValue.isRealName属性)
- ACE_Time_Value使用注意事项
- ACE_Time_Value使用注意事项(续)
- 关于使用<s:property value="">形式取得 数据库图片地址的注意事项
- 网络游戏中使用Nagle算法(TCP_NODELAY=0)注意事项
- MySQL索引类型总结和使用技巧以及注意事项
- java中if与switch-case语句的使用及一些注意事项
- Retrofit2.0使用总结及注意事项
- Windows下TensorBoard使用注意事项
- git的使用注意事项
- 缓存使用的一些注意事项
- zip,collections.defaultdict lambda,csv.DictReader用法简介,及subprocess.call注意事项(需要使用chmod将待执行的文件变为可执行)
- 指针使用时注意事项
- android:PopupWindow的使用场景和注意事项
- BCG使用注意事项