为什么我的s:selectItems不会抛出这样的元素异常?

时间:2011-10-17 06:31:19

标签: jsf-2 richfaces

当我提交表单时,当我尝试检查java.util.NoSuchElementException下的某个复选框时,我收到此错误h:selectManycheckBox

许多复选框是从bean动态填充的。这是我的代码。

<h:form id="eF">
       <h:inputText id="i" value="#{aklat.suggest}">
            <a4j:support event="onkeyup" action="#{aklat.complete}" reRender="m"></a4j:support>
       </h:inputText>

       <s:div>
           <h:selectManyCheckbox value="#{aklat.selectedBooks}" layout="pageDirection" id="m">
                <s:selectItems value="#{aklat.books}" var="_book" itemLabel="#{_book}" itemValue="#{_book}" label="#{_book.bookName}"/>
           </h:selectManyCheckbox>
         <a4j:commandButton value="Add Users" action="#{aklat.fire}"></a4j:commandButton>  
       </s:div>             
</h:form>

奇怪的部分是它渲染了一些数据输出,但是当我检查源代码时。没有输入类型复选框元素。

是我缺少的东西。

1 个答案:

答案 0 :(得分:0)

我假设您的托管bean是请求范围......

因为您正在发出ajax请求,所以必须启用“aklat.books”以使其值的持续时间长于请求但比会话范围短。

如果您在应用程序库之间进行了解决,可以像这样使用savestate(将它放在h:form标签之后):

<t:saveState value="#{aklat.books}"/>

如果没有战斧,你可以使用a4j:keepAlive:

<a4j:keepAlive beanName = "#{aklat.books}"/>