在rich:inplaceSelect中使用布尔型的selectItem时碰到的问题
来源:优易学  2010-1-15 12:01:45   【优易学:中国教育考试门户网】   资料下载   IT书店
  我们都知道,在<h:selectOneMenu>中使用布尔型selectItem时,itemValue为"true"/"false".例如:
  <h:selectOneMenu value="#{controller.booleanPropertyX}">
  <f:selectItem itemLabel="#{messages['xxxxx']}" itemValue="true"/>
  <f:selectItem itemLabel="#{messages['xxxxx']}" itemValue="false"/>
  </h:selectOneMenu>
  这样是没有问题的。
  但是如果你使用<rich:inplaceSelect>来实现选择功能的时候,"true"/"false"就不起作用了,例如:
  <rich:inplaceSelect minSelectWidth="80" editClass="inlineSelectEdit"
  defaultLabel="-Select-" immediate="true"
  value="#{controller.booleanPropertyX}">
  <f:selectItem itemLabel="#{messages['xxxxx']}" itemValue="true"/>
  <f:selectItem itemLabel="#{messages['xxxxx']}" itemValue="false"/>
  </rich:inplaceSelect>
  这时候即使sfsb中的值booleanPropertyX是"true"/"false",也不会有selectItem被选中,而且如果你选择一个 selectItem,还会报错:IllegalArgumentException.说明selectItem的itemValue跟# {controller.booleanPropertyX}的值是不匹配的。
  后来我将"true"/"false"改为"0"/"1", 还是不起作用。
  Finally,终于试出了正确的方法:使用"#{true}"/"#{false}". 正确的使用方法:
  <rich:inplaceSelect minSelectWidth="80" editClass="inlineSelectEdit"
  defaultLabel="-Select-" immediate="true"
  value="#{controller.booleanPropertyX}">
  <f:selectItem itemLabel="#{messages['xxxxx']}" itemValue="#{true}"/>
  <f:selectItem itemLabel="#{messages['xxxxx']}" itemValue="#{false}"/>
  </rich:inplaceSelect>
  也就是说:
  (1)。如果你使用<h:selectOneMenu>,那么你的f:selectItem的itemValue应该使用:"true"/"false"
  (2)。如果你使用<rich:inplaceSelect>,那么你的f:selectItem的itemValue应该使用:"#{true}"/"#{false}"

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训