当前位置: 代码迷 >> JavaScript >> JSF的有关问题,希望那位可以指出有关问题所在
  详细解决方案

JSF的有关问题,希望那位可以指出有关问题所在

热度:406   发布时间:2012-11-08 08:48:11.0
JSF的问题,希望那位可以指出问题所在
backbean的所有代码
  1. package?org.hblz.common.web.jsf; ??
  2. ??
  3. import?javax.faces.component.html.HtmlSelectOneListbox; ??
  4. import?javax.faces.event.ValueChangeEvent; ??
  5. import?javax.faces.model.SelectItem; ??
  6. ??
  7. import?org.apache.log4j.Logger; ??
  8. ??
  9. public?class?UserBean?{ ??
  10. ??
  11. ????@SuppressWarnings("unused") ??
  12. ????private?static?final?Logger?log?=?Logger.getLogger(UserBean.class); ??
  13. ??
  14. ????private?String?message; ??
  15. ??
  16. ????private?SelectItem[]?countyList?=?new?SelectItem[0]; ??
  17. ??
  18. ????private?Long?countyId; ??
  19. ??
  20. ????private?HtmlSelectOneListbox?countySelectList; ??
  21. ??
  22. ????private?SelectItem[]?townList?=?new?SelectItem[0]; ??
  23. ??
  24. ????private?Long?townId; ??
  25. ??
  26. ????private?HtmlSelectOneListbox?townSelectList; ??
  27. ??
  28. ????public?void?processCountySelectListChange(ValueChangeEvent?event)?{ ??
  29. ??
  30. ????????this.message?=?"hello?county!"; ??
  31. ??
  32. ????????Long?newValue?=?(Long)?event.getNewValue(); ??
  33. ??
  34. ????????townList?=?null; ??
  35. ??
  36. ????????townList?=?new?SelectItem[10]; ??
  37. ????????for?(int?i?=?0;?i?<?10;?i++)?{ ??
  38. ????????????SelectItem?st?=?new?SelectItem(new?Long(i),?"Town?No."?+?i ??
  39. ????????????????????+?"?of?County?No."?+?newValue.toString()); ??
  40. ????????????townList[i]?=?st; ??
  41. ????????} ??
  42. ????} ??
  43. ??
  44. ????public?void?processTownSelectListChange(ValueChangeEvent?event)?{ ??
  45. ????} ??
  46. ??
  47. ????public?Long?getCountyId()?{ ??
  48. ????????return?countyId; ??
  49. ????} ??
  50. ??
  51. ????public?void?setCountyId(Long?countyId)?{ ??
  52. ????????this.countyId?=?countyId; ??
  53. ????} ??
  54. ??
  55. ????public?SelectItem[]?getCountyList()?{ ??
  56. ????????countyList?=?new?SelectItem[30]; ??
  57. ????????for?(int?i?=?0;?i?<?30;?i++)?{ ??
  58. ????????????SelectItem?st?=?new?SelectItem(new?Long(i),?"No."?+?i); ??
  59. ????????????countyList[i]?=?st; ??
  60. ????????} ??
  61. ??
  62. ????????return?countyList; ??
  63. ????} ??
  64. ??
  65. ????public?void?setCountyList(SelectItem[]?countyList)?{ ??
  66. ??
  67. ????????this.countyList?=?countyList; ??
  68. ????} ??
  69. ??
  70. ????public?javax.faces.component.html.HtmlSelectOneListbox?getCountySelectList()?{ ??
  71. ????????return?countySelectList; ??
  72. ????} ??
  73. ??
  74. ????public?void?setCountySelectList( ??
  75. ??
  76. ????javax.faces.component.html.HtmlSelectOneListbox?countySelectList)?{ ??
  77. ????????this.countySelectList?=?countySelectList; ??
  78. ????} ??
  79. ??
  80. ????public?String?getMessage()?{ ??
  81. ????????return?message; ??
  82. ????} ??
  83. ??
  84. ????public?void?setMessage(String?message)?{ ??
  85. ????????this.message?=?message; ??
  86. ????} ??
  87. ??
  88. ????public?Long?getTownId()?{ ??
  89. ????????return?townId; ??
  90. ????} ??
  91. ??
  92. ????public?void?setTownId(Long?townId)?{ ??
  93. ????????this.townId?=?townId; ??
  94. ????} ??
  95. ??
  96. ????public?SelectItem[]?getTownList()?{ ??
  97. ??
  98. ????????if?(townList?==?null)?{ ??
  99. ????????????townList?=?new?SelectItem[0]; ??
  100. ????????} ??
  101. ??
  102. ????????return?townList; ??
  103. ????} ??
  104. ??
  105. ????public?void?setTownList(SelectItem[]?townList)?{ ??
  106. ????????this.townList?=?townList; ??
  107. ????} ??
  108. ??
  109. ????public?HtmlSelectOneListbox?getTownSelectList()?{ ??
  110. ????????return?townSelectList; ??
  111. ????} ??
  112. ??
  113. ????public?void?setTownSelectList(HtmlSelectOneListbox?townSelectList)?{ ??
  114. ????????this.townSelectList?=?townSelectList; ??
  115. ????} ??
  116. } ??

配置文件很简单

  1. <!---->xml?version="1.0"?encoding="UTF-8"?>??
  2. <!---->>??
  3. ??
  4. <faces-config>??
  5. ???? ??
  6. ????<managed-bean>??
  7. ????????<managed-bean-name>userBeanmanaged-bean-name>??
  8. ????????<managed-bean-class>??
  9. ????????????org.hblz.common.web.jsf.UserBean ??
  10. ????????managed-bean-class>??
  11. ????????<managed-bean-scope>requestmanaged-bean-scope>??
  12. ????managed-bean>??
  13. ???? ??
  14. ???? ??
  15. faces-config>??
  16. ??

?

下面是JSP代码

xml 代码
  1. <%@?page?language="java"?pageEncoding="ISO-8859-1"%>??
  2. <%@?taglib?uri="http://java.sun.com/jsf/html"?prefix="h"%>??
  3. <%@?taglib?uri="http://java.sun.com/jsf/core"?prefix="f"%>??
  4. ??
  5. <% ??
  6. ????String?path?=?request.getContextPath(); ??
  7. ????String?basePath?=?request.getScheme()?+?"://" ??
  8. ????????????+?request.getServerName()?+?":"?+?request.getServerPort() ??
  9. ????????????+?path?+?"/"; ??
  10. %>??
  11. ??
  12. <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??
  13. <html>??
  14. ????<head>??
  15. ????????<base?href="<%=basePath%>">??
  16. ??
  17. ????????<title>My?JSF?'hello.jsp'?starting?page</title>??
  18. ? ??
  19. ????</head>??
  20. ??
  21. ????<body>??
  22. ????????<f:view>??
  23. ????????????<h:form>??
  24. ????????????????<h:selectOneListbox?id="countySelectList"??
  25. ????????????????????value="#{userBean.countyId}"?binding="#{userBean.countySelectList}"??
  26. ????????????????????size="1"?onchange="this.form.submit()"??
  27. ????????????????????valueChangeListener="#{userBean.processCountySelectListChange}"??
  28. ????????????????????immediate="true">??
  29. ????????????????????<f:selectItems?value="#{userBean.countyList}"?/>??
  30. ????????????????</h:selectOneListbox>??
  31. ??
  32. ????????????????<h:selectOneListbox?id="townSelectList"?value="#{userBean.townId}"??
  33. ????????????????????binding="#{userBean.townSelectList}"?size="1"??
  34. ????????????????????onchange="this.form.submit()"??
  35. ????????????????????valueChangeListener="#{userBean.processTownSelectListChange}"??
  36. ????????????????????immediate="true">??
  37. ????????????????????<f:selectItems?value="#{userBean.townList}"?/>??
  38. ????????????????</h:selectOneListbox>??
  39. ??
  40. ??
  41. ????????????????<h:outputText?value="#{userBean.message}"></h:outputText>??
  42. ????????????</h:form>??
  43. ????????</f:view>??
  44. ????</body>??
  45. </html>??
1 楼 bingxue2332 2007-04-19  
问题是第一次打开和第一次操作都没有问题,但是当操作一次在下拉后就出现了错误,错误信息如下:
java.util.NoSuchElementException
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:96)
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:119)
javax.faces.component.UISelectOne.matchValue(UISelectOne.java:141)
javax.faces.component.UISelectOne.validateValue(UISelectOne.java:114)
javax.faces.component.UIInput.validate(UIInput.java:634)
javax.faces.component.UIInput.executeValidate(UIInput.java:838)
javax.faces.component.UIInput.processDecodes(UIInput.java:383)
javax.faces.component.UIForm.processDecodes(UIForm.java:144)
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:872)
javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:306)
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:79)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

2 楼 jones 2007-04-20  
表达式:#{userBean.countyId}计算的值没有包含在下拉列表的值中,
selectOneListbox是通过value值来确定那个被选中的,如果List提供的可选值中没有value属性指定的值就会 NoSuchElementException
这个异常是说value的值在控件所提供的选项中不存在具有这个值的选项的意思!
3 楼 penghao122 2007-04-20  
断点跟踪一下。。

某些是空的
4 楼 snakeskin 2008-04-08  
验证器出现了错误,在validate phase这个阶段,获得的下拉列表为空,所以验证失败,用session bean能解决这个问题
  相关解决方案