commandButton不会调用bean操作方法

时间:2011-07-08 18:00:10

标签: java-ee jsf-2

我对JSF2呈现动作有很大的问题。 我使用一个简单的c:forEach迭代List。此列表包含itens,这些项目具有更多Itens的列表。所以它是一个嵌套的c:forEach。子列表有一个输入字段,一旦保存,就必须转到bean,保存这个新输入,然后返回带有更新列表的屏幕。 没什么好复杂的。当我调试将List发送回视图的方法时,我看到所有信息都是正确的。 所以这里我们讨论这个问题:commandButton第一次正常工作。但是,如果我在刷新后尝试单击列表上的另一个按钮,则该按钮不会调用我的方法。什么是奇怪的是,该动作确实将它发送到bean(它通过我的@PostConstruct方法),但不会调用我想要的方法。

代码:

 <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>

任何想法的人?

1 个答案:

答案 0 :(得分:0)

尝试使用ui:repeat标记。 c:foreach是构建视图标记,ui:repeat是渲染标记。 按下命令按钮后,jsf-tree不会重建......

如果你包含ui:debug标签,你可以查阅de jsf-tree并调查发生了什么....