2011-07-08 79 views
0

我在JSF2渲染操作中遇到了很大的问题。我使用一个简单的c:forEach遍历列表。这个清单有itens,这些清单有更多的Itens清单。所以它是一个嵌套的c:forEach。子列表中有一个输入字段,一旦保存,必须进入bean,保存这个新输入,然后返回到带有更新列表的屏幕。 没有什么复杂的事情要做。当我调试发送列表回到视图的方法时,我看到所有的信息都是正确的。 所以,我们来解决这个问题:第一次commandButton工作正常。但是,如果我尝试单击列表中的另一个按钮刷新后,该按钮不会调用我的方法。最奇怪的是,这个动作确实将它发送给了bean(它通过我的@PostConstruct方法),但并没有调用我想要的方法。commandButton不会调用bean操作方法

代码:

<c:forEach var="pub" items="${publicacaoCidadeController.listaPublicacao}" varStatus="status"> 
     <div>message from first list : ${status.count} <br/> 
      <h:outputLabel value="#{pub.publicacao.mensagem}" /> 
      <br/><br/>message from second list :<br/> 
      <h:form> 
      <f:ajax event="action" execute="@form" render="@all"> 
      <c:forEach id="test2" var="com" items="#{pub.publicacao.comentarioList}" >         
       <div> 
       <h:outputLabel value="#{com.mensagem}" /> 
       </div>         
      </c:forEach> 
      <div> 
      <h:inputTextarea value="#{publicacaoCidadeController.msgComentarioNovo}" /> 
      <div >          
        <h:commandButton type="submit" value="Postar" action="#{publicacaoCidadeController.salvarComentario}" > 
         <f:param name="codPublicacao" value="#{pub.publicacao.codPublicacao}"/> 
         <f:param name="postNum" value="${status.count}"/> 
        </h:commandButton> 
       </div>          
       </div> 
       </f:ajax> 
       </h:form>    
      </div> 
    </c:forEach> 

任何想法的家伙?

回答

0

尝试使用ui:repeat标记。 c:foreach是一个构建视图标记,ui:repeat是一个渲染标记。 按命令按钮的JSF树不重建......

如果包括ui:debug标签,你可以咨询去JSF树和调查发生了什么事....

+0

喜后,只是为了让你知道,你可以使用反引号(''')来突出显示部分文本为'code',这通常会使问题更容易阅读。 – Kzqai

相关问题