Pregunta

Estoy trabajando en un Wicket basado en la aplicación web.En la aplicación hay botones que no todos los usuario está autorizado a utilizar.Estos botones son en realidad simples enlaces, por ejemplo,

<a wicket:id="publishButton" title="Publish" class="rightPanel_publish"><wicket:message key="publish"/></a>

con una clase CSS (desde un archivo CSS externo) que establece su aspecto visual, por ejemplo,

a.rightPanel_publish {
    display: block;
    width: 90px;
    height: 27px;
    background: url( ../imgs/right_panel_icon03.gif ) left top repeat-y;
    text-decoration: none;
    color: black;
    padding: 12px 0px 0px 35px;
}

Cuando el usuario no está autorizado a utilizar el botón, el enlace está desactivado (en Java) y el CSS, por alguna razón, no se utiliza más.

Mi pregunta es este:es allí una manera de identificar que el enlace está desactivado en tiempo de ejecución y cambiar el CSS de la clase?Prefiero evitar el uso de javascript (las arregló para mantener el proyecto en su totalidad JS libre de tan lejos...), y prefieren algo que funcione con todos los navegadores.

Muchísimas gracias,

Yuval =8-)

¿Fue útil?

Solución

Por desgracia, no sé de una manera de cambiar la página de un botón sin JS. CSS, Java y todo lo demás se ejecuta mientras se carga la página, después de que la página se ha cargado la única manera de interactuar con la página es a través de JS.

Sin embargo aquí está la JS que funciona en cualquier navegador (IE 6+, Safari, Opera, FF, etc.),

  if(document.getElementById('foo'))
  {
    document.getElementById('foo').className='bar';
  }

Otros consejos

No hay manera de hacer esto sin secuencias de comandos de algún tipo. La "D" en "DHTML" es sinónimo de "Javascript": P


Edit: En realidad, puesto que dices algo es deshabilitar el botón / enlace, que algo podría / debería también añadir una clase "desactivado" (la única forma de x-navegador para obtener CSS a notar) al mismo elemento. conmutación de tiempo de ejecución no entra en ella -. Si una cosa está cambiando el estado que debe hacer tan a fondo

También puede cambiar el aspecto del botón (es decir, la clase CSS) con un AttributeModifier, basado en el estado de autenticación de usuario:

myButton.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {

        private static final long serialVersionUID= 1L;

        @Override
        public String getObject () {
            if (!isAuthorized()) {
                return "rightPanel_unauthorized";
            }
            return "rightPanel_publishbutton";
        }
    }));

En el CSS, a continuación, definir el estilo ".rightPanel_unauthorized" a medida que lo necesite.

I uso el *.setVisible(Boolean boolean)

Está disponible para los modelos WebMarkupContainer en peatonal incorporada. El setVisible () se puede asignar en otra parte de la clase basado en roles de usuario. lo que puede tener que buscarlo ...

scroll top