我有一个复选框,所以当我点击我的复选框时,我想取消隐藏我的面板,当我取消选中我的复选框时,我希望我的面板隐藏。 但到目前为止,我的代码还没有成功: managedbean:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.faces.event.ActionEvent;
import com.avon.mx.constants.TagsPrintConstants;
import com.avon.mx.utils.FacesUtils;
public class DevolucionesCCMB {
private String codigoFS;
private String descripcionFS;
private String lote;
private boolean busqueda;
private Date fechaProduccion;
private int numeroCajas;
private int numeroPiezasXCaja;
private int total;
private Date fechaIngreso;
private boolean mostrar;
private boolean invalidarEtiqueta;
private String claveEtiqueta;
private String comentariosEtiqueta;
private int cantidadAImprimir;
/**
* Constructor
*/
public DevolucionesCCMB() {
}
public String redirecciona() {
if (FacesUtils.existeUsuarioLogueado()) {
limpiarCampos();
return TagsPrintConstants.PAGE_DEVOLUCIONES_CC;
} else {
return TagsPrintConstants.PAGE_LOGIN;
}
}
/*
* Obtener el dia hoy
*/
public Date getNow() {
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yy");
Date date = new Date();
return date;
}
/*
* Método para limpiar campos
*/
public void limpiarCampos() {
setCodigoFS(TagsPrintConstants.VACIO);
setDescripcionFS(TagsPrintConstants.VACIO);
setLote(TagsPrintConstants.VACIO);
setFechaProduccion(getNow());
setNumeroCajas(TagsPrintConstants.ZEROINT);
setNumeroPiezasXCaja(TagsPrintConstants.ZEROINT);
setTotal(TagsPrintConstants.ZEROINT);
setFechaIngreso(getNow());
setInvalidarEtiqueta(TagsPrintConstants.FALSO);
setClaveEtiqueta(TagsPrintConstants.VACIO);
setComentariosEtiqueta(TagsPrintConstants.VACIO);
setCantidadAImprimir(TagsPrintConstants.ZEROINT);
setMostrar(false);
}
public void mostrarOcultar() {
if (isInvalidarEtiqueta()) {
setMostrar(true);
} else {
setMostrar(false);
}
System.out.println("inv: " + isInvalidarEtiqueta());
System.out.println("most: " + isMostrar());
}
public void obtenerDescripcion(ActionEvent actionEvent) {
setDescripcionFS("Descripción");
}
/**
* @return the codigoFS
*/
public String getCodigoFS() {
return codigoFS;
}
/**
* @param codigoFS the codigoFS to set
*/
public void setCodigoFS(String codigoFS) {
this.codigoFS = codigoFS;
}
/**
* @return the descripcionFS
*/
public String getDescripcionFS() {
return descripcionFS;
}
/**
* @param descripcionFS
* the descripcionFS to set
*/
public void setDescripcionFS(String descripcionFS) {
this.descripcionFS = descripcionFS;
}
/**
* @return the lote
*/
public String getLote() {
return lote;
}
/**
* @param lote
* the lote to set
*/
public void setLote(String lote) {
this.lote = lote;
}
/**
* @return the fechaProduccion
*/
public Date getFechaProduccion() {
return fechaProduccion;
}
/**
* @param fechaProduccion
* the fechaProduccion to set
*/
public void setFechaProduccion(Date fechaProduccion) {
this.fechaProduccion = fechaProduccion;
}
/**
* @return the numeroCajas
*/
public int getNumeroCajas() {
return numeroCajas;
}
/**
* @param numeroCajas
* the numeroCajas to set
*/
public void setNumeroCajas(int numeroCajas) {
this.numeroCajas = numeroCajas;
}
/**
* @return the numeroPiezasXCaja
*/
public int getNumeroPiezasXCaja() {
return numeroPiezasXCaja;
}
/**
* @param numeroPiezasXCaja the numeroPiezasXCaja to set
*/
public void setNumeroPiezasXCaja(int numeroPiezasXCaja) {
this.numeroPiezasXCaja = numeroPiezasXCaja;
}
/**
* @return the total
*/
public int getTotal() {
return total;
}
/**
* @param total
* the total to set
*/
public void setTotal(int total) {
this.total = total;
}
/**
* @return the invalidadEtiqueta
*/
public boolean isInvalidarEtiqueta() {
return invalidarEtiqueta;
}
/**
* @param invalidadEtiqueta
* the invalidadEtiqueta to set
*/
public void setInvalidarEtiqueta(boolean invalidarEtiqueta) {
this.invalidarEtiqueta = invalidarEtiqueta;
}
/**
* @return the claveEtiqueta
*/
public String getClaveEtiqueta() {
return claveEtiqueta;
}
/**
* @param claveEtiqueta
* the claveEtiqueta to set
*/
public void setClaveEtiqueta(String claveEtiqueta) {
this.claveEtiqueta = claveEtiqueta;
}
/**
* @return the comentariosEtiqueta
*/
public String getComentariosEtiqueta() {
return comentariosEtiqueta;
}
/**
* @param comentariosEtiqueta
* the comentariosEtiqueta to set
*/
public void setComentariosEtiqueta(String comentariosEtiqueta) {
this.comentariosEtiqueta = comentariosEtiqueta;
}
/**
* @return the cantitadAImprimir
*/
public int getCantidadAImprimir() {
return cantidadAImprimir;
}
/**
* @param cantitadAImprimir the cantitadAImprimir to set
*/
public void setCantidadAImprimir(int cantidadAImprimir) {
this.cantidadAImprimir = cantidadAImprimir;
}
/**
* @return the busqueda
*/
public boolean isBusqueda() {
return busqueda;
}
/**
* @param busqueda the busqueda to set
*/
public void setBusqueda(boolean busqueda) {
this.busqueda = busqueda;
}
/**
* @return the fechaIngreso
*/
public Date getFechaIngreso() {
return fechaIngreso;
}
/**
* @param fechaIngreso the fechaIngreso to set
*/
public void setFechaIngreso(Date fechaIngreso) {
this.fechaIngreso = fechaIngreso;
}
public boolean isMostrar() {
return mostrar;
}
public void setMostrar(boolean mostrar) {
this.mostrar = mostrar;
}
}
这是我的xhtml:
<p:messages id="messages" showDetail="true" autoUpdate="true"
closable="true" />
<h:form id="formUnits">
<p:blockUI block="formUnits" trigger="codigoFSP" widgetVar="dlg">
<p:graphicImage value="./resources/img/cargando.gif"
style="alignment-adjust: central" />
</p:blockUI>
<p:growl id="growl" showDetail="true" />
<p:panel id="formulario" styleClass="panelDevoluciones">
<fieldset>
<legend id="leyend" class="leyend"> Devoluciones CC </legend>
<table class="tablaDevolucionCC" border="0">
<tr>
<td align="right">
<h:outputLabel id="invalidarEtiqueta" value="Invalidar Etiqueta: " styleClass="textoEtiqueta"/>
</td>
<td align="left">
<p:selectBooleanCheckbox id="invalidarEtiquetaP" value="#{devolucionesCCMB.invalidarEtiqueta}">
<p:ajax update="growl :formUnits:myPanel" listener="#{devolucionesCCMB.mostrarOcultar}"/>
</p:selectBooleanCheckbox>
</td>
</tr>
<tr>
<p:panel widgetVar="myPanel" rendered="#{devolucionesCCMB.mostrar}" autoUpdate="true">
<td align="right">
<h:outputLabel id="claveEtiqueta" value="Clave de la Etiqueta: " styleClass="textoEtiqueta"/>
</td>
<td align="left">
<p:inputText id="claveEtiquetaP" value="#{devolucionesCCMB.claveEtiqueta}" disabled="false" size="15" styleClass="textoEtiqueta"/>
</td>
</p:panel>
</tr>
</table>
</fieldset>
</p:panel>
</h:form>
提前感谢您的帮助。
答案 0 :(得分:3)
您必须将myPanel
包装在另一个容器中并更改它。您的问题基本上是当您的面板保持隐藏状态时,p:selectBooleanCheckbox
无法更新它,因为该组件未在DOM树中呈现。您的问题与this case完全相同。这应该做的工作:
<h:panelGroup id="parentPanel">
<p:panel widgetVar="myPanel" rendered="#{devolucionesCCMB.mostrar}">
<td align="right">
<h:outputLabel id="claveEtiqueta" value="Clave de la Etiqueta: " styleClass="textoEtiqueta"/>
</td>
<td align="left">
<p:inputText id="claveEtiquetaP" value="#{devolucionesCCMB.claveEtiqueta}" disabled="false" size="15" styleClass="textoEtiqueta"/>
</td>
</p:panel>
</h:outputPanel>
<p:selectBooleanCheckbox id="invalidarEtiquetaP" value="#{devolucionesCCMB.invalidarEtiqueta}">
<p:ajax update="parentPanel" listener="#{devolucionesCCMB.mostrarOcultar}"/>
</p:selectBooleanCheckbox>