【问题标题】:primefaces commandButton "update" not workingprimefaces commandButton“更新”不起作用
【发布时间】:2015-03-26 11:58:57
【问题描述】:

我有这个对话框:

    <p:dialog 
        id="dlgComment"
        widgetVar="dialogComentario"
        modal="true"
        header="#{messages.comentarios}"
        width="600px"
        resizable="false" showEffect="clip" hideEffect="clip">
        <h:form id="formComentario">
            <p:panelGrid columns="2" style="width: 100%">
                <f:facet name="header">
                    <h:outputText value="#{monitorarEventoControlador.eventoSelecionado.titulo}"/>
                </f:facet>
                <h:outputText value="#{messages.inicio}" />  
                <h:outputText value="#{monitorarEventoControlador.eventoSelecionado.inicio}" />  

                <h:outputText value="#{messages.gravidade}" />  
                <h:outputText value="#{monitorarEventoControlador.eventoSelecionado.gravidade}" />  
            </p:panelGrid>
            <p:dataTable id="tableComentario" var="comentario" value="#{monitorarEventoControlador.eventoSelecionado.getComentariosAsList()}" emptyMessage="#{messages.noRecordsFound}">
                <f:facet name="header">
                    #{messages.comentarios}
                </f:facet>
                <p:column headerText="#{messages.dataHora}"> 
                    <h:outputText value="#{comentario.dataHora}">
                        <f:convertDateTime pattern="dd/MM/yyyy HH:mm" timeZone="#{monitorarEventoControlador.buscaTimeZone()}"/>
                    </h:outputText>
                </p:column>  
                <p:column headerText="#{messages.usuario}"> 
                    <h:outputText value="#{comentario.usuario.orgao.sigla} - #{comentario.usuario.apelido}"/>
                </p:column>  
                <p:column headerText="#{messages.texto}"> 
                    <h:outputText value="#{comentario.texto}" />  
                </p:column>  
            </p:dataTable>
            <p:panelGrid columns="2" style="width: 100%">
                <h:inputText value="#{monitorarEventoControlador.comentarioSelecionado.texto}" maxlength="80"/>
                <p:commandButton value="#{messages.comentar}" actionListener="#{monitorarEventoControlador.adicionarComentario()}" icon="ui-icon-check" update="tableComentario" />
            </p:panelGrid>
        </h:form>
    </p:dialog>

还有豆子:

    public void adicionarComentario() {
        comentarioSelecionado.setDataHora(new Date());
        comentarioSelecionado.setEvento(eventoSelecionado);
        comentarioSelecionado.setUsuario(autenticador.getUsuarioCorrente());
        todosOsComentarios.colocar(comentarioSelecionado);
        notificarComentario(comentarioSelecionado);
        eventoSelecionado.getComentarios().add(comentarioSelecionado);
        todosOsEventos.colocar(eventoSelecionado);
        iniciarComentario(eventoSelecionado);
    }

 private void notificarComentario(Comentario comentario) {
    Notificacao n = new Notificacao();
    n.setDataHora(comentario.getDataHora());
    n.setDescricao(DateUtil.dataHoraFormatada(n.getDataHora()) + " - " + comentario.getUsuario().getOrgao().getSigla() + "(" + comentario.getUsuario().getApelido() + "): " + comentario.getTexto());
    n.setComentario(true);
    n.setInforme(comentario.getEvento().getInforme());
    comentario.getEvento().getInforme().getNotificacoes().add(n);
}

public void iniciarComentario(Evento evento) {
    comentarioSelecionado = new Comentario();
    setEventoSelecionado(evento);
}

commandButton 应该更新一个数据表。我刚刚从 Prime 3.5 迁移到 5.1,在我设法弄清楚的其他问题中,有一个真的很烦人。它在 Prime 3.5 上工作。 更具体地说明这里出了什么问题:动作正常触发,数据正确插入,但数据表不再更新。这与我昨天在 Prime 3.5 中使用的代码完全相同,但现在,使用 Prime 5.1,dataTable 不再刷新。
有任何想法吗 ?谢谢

【问题讨论】:

  • 尝试添加 process='@this' do commandButton
  • @LuísSoares @this 是默认值。他宁愿尝试处理实际的输入文本。 @Maverick_Java。请同时显示您的 bean,并指定“不工作” - 错误?例外?分步调试告诉您什么?
  • @form 不是默认的吗?我是这样解决的,我相信。我还必须从 3.1 更新到 5.1
  • @Maverick_Java 当您在侦听器中放置断点时 - 它会被触发吗?
  • 好的。我想到了。我用 try/catch 填充了我的代码,发现它在我的一个数据库表中缺少一个值。尽管值被持久化并且没有引发异常,但是有一列没有它的值,它在“notificarCommentario”方法中导致了一些异常(没有详细消息或特定异常类,只是“异常”)。谢谢大家。

标签: ajax jsf primefaces commandbutton


【解决方案1】:

在 id 之前使用 :


记住

如果你进行对话

  1. 对话框之前的旧表单标签应该关闭
  2. 那么对话框内容应该放到另一个表单中。
  3. 使用 :dialogid, :dialogFormId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2015-08-29
    相关资源
    最近更新 更多