2010-05-04 3 views
1

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

Например, Если переменная сеанса была «синей», я хочу, чтобы страница загружала файл 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 я использую. Это был проект, полученный от кого-то другого, и я никогда не использовал их до

ответ

0

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

0
href="<html:rewrite page="/css/${brand}.css"/>"> 
+0

Это не сработало. в html он просто отображает $ {brand}, а не переменную – MichaelMcCabe

+0

покажет нам верхнюю часть вашего jsp. И какую версию jsp и jstl вы используете? – Bozho

+0

@MichaelMcCabe попробуйте добавить двойные кавычки, а не сингл. – Bozho

0

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

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

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

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

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

<link href="/css/<%=brand%>.css" rel="stylesheet" type="text/css" /> 
0

Попробуйте этот скрипт java, он будет работать. переменный код - это скрытое поле в ur 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); 
    }