Pregunta

Tengo la envuelta en mi propio componente caras. En este momento nos encontramos con que al agregar varios mensajes al son de los que se mueven expande los componentes de la página real a la muy lejos inferior de la página.

No es viable para cambiar las 300 páginas que tenemos en este sistema. Tratado de encontrar manera de limitar la altura de la <h:messages> por CSS sin éxito.

El lado brillante es que cuando la adición de messsages al contexto caras actuales se requiere que la persona que llama utiliza un método de la superclase. Yo era capaz de limitar los mensajes, pero mi variables de control no se reseteo cuando se vuelve a cargar la página.

Mi pregunta, ¿hay alguna otra manera de limitar los mensajes de contexto caras?

(usando JavaEE5, JSF 1.1, tomcat5)

¿Fue útil?

Solución 2

Esto es lo que hice para solucionar el problema. Como dije en mi post original el uso de componentes que se envuelve. Me sobreescribí la encodeBegin y encodeEnd para envolver el original H: mensajes con un elemento div:

import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlMessages;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.el.ValueBinding;

public class UIMessages extends HtmlMessages implements LayoutComponent {

  public void encodeBegin(FacesContext context) throws IOException{
    ResponseWriter writer = context.getResponseWriter();
    layout.startRow(writer);
    layout.startData(writer);
    writer.startElement("div", this);
    writer.writeAttribute("style", "overflow:auto; border:0px solid; max-height:100px;", null);
    super.encodeBegin(context);
  }

  public void encodeEnd(FacesContext context) throws IOException{
      ResponseWriter writer = context.getResponseWriter();
      super.encodeEnd(context);
      writer.endElement("div");
      layout.endData(writer);
      layout.endRow(writer);
  }
}

Otros consejos

El h:messages hace de forma predeterminada una lista desordenada (<ul><li>). Así que para limitar la altura usando CSS, es necesario establecer una altura fija sobre el elemento <ul> y aplicar un desbordamiento en el eje Y para que los usuarios todavía podrán desplazarse a través de él.

Básicamente:

.messages {
    height: 100px;
    overflow-y: scroll;
}

Aplicar usando atributo styleClass:

<h:messages styleClass="messages" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top