Soy nuevo en la Primavera y me necesitan para establecer una cookie personalizada al botón «iniciar Sesión» que se hace clic en y, a continuación, que la cookie será de color rojo dentro de la webapp. ¿Cuál es la mejor práctica para hacer exactamente eso? Además, esto trae la pregunta de cómo leer después en cada página en la webapp?

Pensé que pueden establecer cookies con JavaScript, y leer más tarde a través de filtro personalizado (el que lee la cookie de solicitud, establece que para el atributo y la enviará al controlador.

Es este pensamiento correcto? O debo establecer la cookie en algún otro lugar (si es así donde y por qué?)

ACTUALIZACIÓN 1:

Lo que quiero lograr: he cuadro de lista desplegable (que es el selector de idioma) en la página de inicio de sesión que tiene algunos valores (código de idioma, por ejemplo, «en»), y el valor seleccionado se debe establecer como cookie (por ejemplo, «lang») y que «lang» cookie será de color rojo para i18n más tarde en las páginas. He hecho i18n a trabajar, pero tengo que leer «lang» cookie para establecer el idioma seleccionado.

ACTUALIZACIÓN 2:

Yo he hecho lo que quería hacer, pero no es exactamente limpio:

Estoy configuración de cookies a través de Javascript o jQuery para ser exactos, y cuando el usuario selecciona o cambia la selección en <select/> Javascript inyecta valor del idioma como de la galleta (por ejemplo, en):

HTML:

<select name="language" id="selectLanguage" class="form-control">
   <option val="en">English</option>
</select>

JS:

var cookie = {

    set: function($this) {
        var now = new Date();
        var time = now.getTime();
        var expireTime = time + 1000*36000;
        now.setTime(expireTime);
        document.cookie = 'lang=' + $this.val() +';expires='+now.toGMTString()+';path=/';
    }

}

$('#selectLanguage').change(function(event) {
    cookie.set($(this));
});

A continuación, he creado nuevas Archivador de que me llama CookieFilter.java:

public class CookieFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;

        Cookie[] cookies = ((HttpServletRequest) req).getCookies();
        if (cookies != null) {
            for (Cookie ck : cookies) {
                if(ck.getName().toString().equals("lang")){
                    req.setAttribute("languageCookie", ck.getValue());
                } else {
                    req.setAttribute("languageCookie", "en");
                };
            }
            chain.doFilter(req, res);
        }
    }

    public void init(FilterConfig config) throws ServletException {
        //TODO Auto-generated method stub
    }
    public void destroy() {
        //TODO Auto-generated method stub
    }
}

Añadido nuevas filtro en web.xml:

<filter>
    <filter-name>CookieFilter</filter-name>
    <filter-class>
        package.path.to.CookieFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>CookieFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Y para terminar todo, tengo la solicitud de CookieFilter en mi controlador y rojo el atributo que me envió:

String cookie = request.getAttribute("languageCookie").toString();
model.addAttribute("languageCookie",cookie);

Ahora puedo leer el atributo de model y la puso en el interior .JSP o hacer lo que quiera con ella.

Que es mi solución, pero no debe ser de otra forma … 🙂

  • Manejo de cookies es una parte básica del servlet API (a través de la setCookie y getCookies métodos en HttpServletRequest). Usted realmente necesita para explicar lo que estamos tratando de lograr y por qué.
  • He cuadro de lista desplegable (selector de idioma) en la página de inicio de sesión que tiene algunos valores (código de idioma, por ejemplo, «en»), y el valor seleccionado se debe establecer como cookie (por ejemplo, lang) y que lang cookie será de color rojo para i18n más tarde en la página. He hecho i18n para trabajar, pero necesito leer lang cookie para establecer el idioma seleccionado. Yo sé que ellos son parte básica, pero no sé donde poner la cookie. En el controlador? Donde? 😀
  • Por favor agregar soluciones como las respuestas no se como se edita. Ser la solución que te gusta o no, a resolver su problema. Si usted quiere tener comentarios sobre lo buena que el código es, puede que desee hacer esa pregunta en CodeReview
InformationsquelleAutor TurtleFrog | 2013-12-03

1 Comentario

  1. -1

    Por lo tanto, es un requisito para el uso de una cookie o es que sólo el enfoque que usted está tomando? Usted puede muy limpia manejar i18n en Spring MVC utilizando los Interceptores. Me cubierta que aquí. Básicamente, usted necesita registrarse un interceptor y tiene que determinar su navegador solicita.

    • Gracias por tu respuesta. Bueno, eso es sólo mi enfoque de toda la historia aquí, voy a mirar en interceptores, pero aún así, la pregunta sigue siendo la misma 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here