在rich:inplaceSelect中使用布尔型的0selectItem时碰到的问题计算机等级考试
文章作者 100test 发表时间 2009:07:12 21:03:42
来源 100Test.Com百考试题网
编辑特别推荐:
全国计算机等级考试(等考)指定教材
全国计算机等级考试学习视频
全国计算机等级考试网上辅导招生
全国计算机等级考试时间及科目预告
百考试题教育全国计算机等级考试在线测试平台
全国计算机等级考试资料下载
我们都知道,在<.h:0selectOneMenu>.中使用布尔型0selectItem时,itemValue为"true"/"false".例如:
<.h:0selectOneMenu value="#{controller.booleanPropertyX}">.
<.f:0selectItem itemLabel="#{messages[ xxxxx ]}" itemValue="true"/>.
<.f:0selectItem itemLabel="#{messages[ xxxxx ]}" itemValue="false"/>.
<./h:0selectOneMenu>.
这样是没有问题的。
但是如果你使用<.rich:inplaceSelect>.来实现选择功能的时候,"true"/"false"就不起作用了,例如:
<.rich:inplaceSelect minSelectWidth="80" editClass="inlineSelectEdit"
defaultLabel="-Select-" immediate="true"
value="#{controller.booleanPropertyX}">.
<.f:0selectItem itemLabel="#{messages[ xxxxx ]}" itemValue="true"/>.
<.f:0selectItem itemLabel="#{messages[ xxxxx ]}" itemValue="false"/>.
<./rich:inplaceSelect>.
这时候即使sfsb中的值booleanPropertyX是"true"/"false",也不会有0selectItem被选中,而且如果你选择一个 0selectItem,还会报错:IllegalArgumentException.说明0selectItem的itemValue跟# {controller.booleanPropertyX}的值是不匹配的。
后来我将"true"/"false"改为"0"/"1", 还是不起作用。
Finally,终于试出了正确的方法:使用"#{true}"/"#{false}". 正确的使用方法:
<.rich:inplaceSelect minSelectWidth="80" editClass="inlineSelectEdit"
defaultLabel="-Select-" immediate="true"
value="#{controller.booleanPropertyX}">.
<.f:0selectItem itemLabel="#{messages[ xxxxx ]}" itemValue="#{true}"/>.
<.f:0selectItem itemLabel="#{messages[ xxxxx ]}" itemValue="#{false}"/>.
<./rich:inplaceSelect>.
也就是说:
(1)。如果你使用<.h:0selectOneMenu>.,那么你的f:0selectItem的itemValue应该使用:"true"/"false"
(2)。如果你使用<.rich:inplaceSelect>.,那么你的f:0selectItem的itemValue应该使用:"#{true}"/"#{false}"