Как получить динамические CSS-файлы в зависимости от переменной сессии Struts - PullRequest
1 голос
/ 04 мая 2010

У меня есть веб-страница, на которой я хочу, чтобы файл css имел то же имя, что и заданная переменная сеанса.

Например; Если переменная сеанса была "синей", я хочу, чтобы страница загружала файл CSS blue.css .

Я попробовал что-то ниже, что не сработало, и теперь я застрял. Мои знания о стойках очень ограничены.

<LINK rel="stylesheet" type="text/css" 
    href="<html:rewrite page='/css/<c:out value="${brand}"/>.css'/>">

Это полный список кодов в верхней части моей страницы JSP

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html-el" prefix="html-el"%>

<html:html lang="true">

<head>
<LINK rel="stylesheet" type="text/css" href="<html:rewrite page='/css/${brand}.css'/>">

<html:base/>

Я не знаю, как найти версию JSP и JSTL, которые я использую. Это был проект, полученный от кого-то другого, и я никогда не использовал их раньше

Ответы [ 5 ]

0 голосов
/ 27 сентября 2010

Попробуйте этот сценарий Java, он будет работать. Код переменной является скрытым полем в вашем JSP.

var code=(document.getElementById('code')).value;

var url;

// Dynamically loads the Style Sheet according to the user logged in
if(code !== null)
    {
    url="<link rel='stylesheet' type='text/css' href='css/"+code+".css' title='default'>";
    }
else
    {
    url="<link rel='stylesheet' type='text/css' href='css/commonStyle.css' title='default'>";
    }
if(url !== null)
    {
    document.write(url);
    }
0 голосов
/ 04 мая 2010

К сожалению, я не смог заставить работать ни один из ваших ответов. Я думаю, что это может быть проблема с конфликтом моих версий.

На данный момент мне удалось сделать это;

<%
String brand = (String) session.getAttribute("brand");
if (brand == null || brand.equals("")) {
    skin = "standard";
}
%>

<link href="/css/<%=brand%>.css" rel="stylesheet" type="text/css" />
0 голосов
/ 04 мая 2010
href="<html:rewrite page="/css/${brand}.css"/>">
0 голосов
/ 04 мая 2010

по словам другого пользователя, вы не можете переписать html в атрибуте, но, может быть, вы можете сделать что-то вроде ниже и переписать всю ссылку?

<html:rewrite page='<LINK rel="stylesheet" type="text/css" href="/css/${brand}.css"/>'>
0 голосов
/ 04 мая 2010

Это не работает, потому что вы помещаете тег c: out в атрибут тега html: rewrite. Теги Struts не анализируются в пределах значений атрибута.

...