【发布时间】: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