Hello社区我有一个问题我需要在下载文件后更新表单组件,但是当commandButton运行条件时ajax =" false"不处理动作"更新",我希望我可以建议你如何做你提到的行动。
presupuesto.xhtml
<p:dialog id="dlgPresupuesto" widgetVar="dlgVarPresupuesto" closable="false"
hideEffect="clip" showEffect="Bounce" header="#{msg['form.boton.guardar']}"
modal="true" appendTo="@(body)" resizable="false">
<h:form id="frmPresupuesto">
<p:panel id="pnlPresupuesto">
<fieldset class="fieldset-formulario">
<h:panelGrid>
<p:outputLabel value="#{msg['msg.confirm.confirmacionGrabar']}"
style="font-weight: bold;" />
</h:panelGrid>
<h:panelGrid columns="3">
<p:commandButton value="#{msg['form.boton.aceptar']}" ajax="false"
actionListener="#{cRegistroPresupuesto.grabarPresupuesto}"
onclick="PF('dlgVarPresupuesto').hide()"
update=":frmPresupuesto, :listaMensajes"
icon="ui-icon-disk">
<p:fileDownload value="#{cRegistroPresupuesto.file}" contentDisposition="attachment" />
</p:commandButton>
<p:spacer width="8" />
<p:commandButton value="#{msg['form.boton.salir']}"
oncomplete="PF('dlgVarPresupuesto').hide()"
icon="ui-icon-circle-arrow-w"/>
</h:panelGrid>
</fieldset>
</p:panel>
</h:form>
</p:dialog>
CRegistroPresupuesto.java
@ManagedBean(name = "cRegistroPresupuesto")
@ViewScoped
public class CRegistroPresupuesto extends BaseController
{
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(CRegistroPresupuesto.class);
@ManagedProperty(value = "#{iPresupuestoService}")
private IPresupuestoService iPresupuestoService;
private PresupuestoBean presupuesto;
private StreamedContent file;
/**
* Graba el presupuesto asociado.
* @param event - Evento desencadenado en la interfaz de usuario.
*/
public void grabarPresupuesto(ActionEvent event)
{
try
{
if(this.presupuesto.getSiCodPresupuesto() == Constantes.ZERO_SHORT)
{
this.presupuesto.setSiAnio((short) DateUtil.getAnioActual());
this.presupuesto.setTsFecSolicitada(Calendar.getInstance().getTime());
this.presupuesto.setVrazSocial(getCliente(this.presupuesto.getIcodEmpresa()));
this.presupuesto.setVrazSocial(getPersona(this.presupuesto.getIcodPersona()));
}
Short siCodPrespuesto = iPresupuestoService.grabarPresupuesto(this.presupuesto,
this.listaCuadroCosto,
getNombreHost(),
getCVariableSesion().getIcodUsu());
StringBuilder titulo = new StringBuilder();
titulo.append(getMessage("presupuesto.form.presupuesto.nro"));
titulo.append(String.format("%05d", siCodPrespuesto));
titulo.append(Constantes.SEPARADOR);
titulo.append(String.valueOf(this.presupuesto.getSiAnio()).substring(2));
titulo.append(Constantes.EIG);
this.presupuesto.setvTitPresupuesto(titulo.toString());
addInfoMessage(null, getMessage("msg.info.grabadoOk"));
InputStream stream = new FileInputStream("C:\\reporte\\ReportePresupuesto.xls");
file = new DefaultStreamedContent(stream, "application/xls", "ReportePresupuesto.xls");
RequestContext.getCurrentInstance().update(":frmRegistro");
}
catch (Exception e)
{
LOGGER.error(getGenerarError(
Thread.currentThread().getStackTrace()[1].getMethodName(),
Constantes.NIVEL_APP_CONSTROLLER,
this.getClass().getName(), e.getMessage()));
}
}
// get and set
}