Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение значения константы в struts / 3 сообщений из 3, страница 1 из 1
27.07.2005, 20:33
    #33187921
artgonch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения константы в struts
Здравствуйте!
Строковые (и не только) константы хранятся у меня в отдельном классе, например:

public Consts
{
...
public static final String msg = "Some message";
}



Как мне, не прибегая к помощи скриптлетов, получить значение константы по ее имени?
Заранее спасибо.
...
Рейтинг: 0 / 0
27.07.2005, 22:02
    #33187987
коты
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения константы в struts
предположим, класс с константами реализован в виде синглтона

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 package  jsp.custom.tag;

 public   class  C {

     private   static  C c;
    
     public  C() {}
    
     public   static  C getC() {
         if (c ==  null )
            c =  new  C();
        
         return  c;
    }
    
     public   static   final   int  intVal =  666 ;
     public   static   final  String strVal = "blah";
     public   static   final   Float  f =  new   Float ( 3 . 14 );
     public   static   final  Shit shit =  new  Shit("delicious",  93 );
  
}

 class  Shit {
     private  String shit;
     private   int  smells;
    
     public  Shit(String shit,  int  smells) {
         this .shit = shit;
         this .smells = smells;
    }
    
     public  String toString() {
         return  "SHIT>> " + shit + " " + smells + " <<SHIT";
    }
}

делаешь простой таглиб

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version> 1 . 0 </tlib-version>
 <jsp-version> 1 . 2 </jsp-version>
 <short-name>shit</short-name>
 <uri>http://someshit/tags/</uri>

 <tag>
  <name>const</name>
  <tag-class>jsp.custom.tag.Const</tag-class>
  <attribute>
      <name>constName</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
   </attribute>
 </tag>
</taglib>

затем реализуешь класс

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
 package  jsp.custom.tag;

 import  java.io.IOException;

 import  javax.servlet.jsp.tagext.TagSupport;

 public   class   Const   extends  TagSupport {
    
     private  String constName;
        
     public   void  setConstName(String constName) {
         this .constName = constName;
    }
     public   int  doStartTag() {
        
         try  {
            pageContext.getOut().write(
                    C. class 
                    .getDeclaredField(constName)
                    .get(C.getC())
                    .toString()
            );
        }  catch  (IllegalArgumentException e) {
            e.printStackTrace();
        }  catch  (SecurityException e) {
            e.printStackTrace();
        }  catch  (IllegalAccessException e) {
            e.printStackTrace();
        }  catch  (NoSuchFieldException e) {
            e.printStackTrace();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
         return  (SKIP_BODY);
    }
}

в нем с помощью reflection api берем поле, объект из синглтона, конвертим его в string. затем выдаем в обычный аут страницы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<%@ taglib uri="http://someshit/tags/" prefix="shit" %>
....
....
<shit:const constName="intVal" />
<shit:const constName="strVal" />
<shit:const constName="f" />
<shit:const constName="shit" />

таглиб прописываем в web.xml приложения

Код: plaintext
1.
2.
3.
4.
	<taglib>
		<taglib-uri>http://someshit/tags/</taglib-uri>
		<taglib-location>/WEB-INF/shit.tld</taglib-location>
	</taglib>

смотрим страницу и видим там

Код: plaintext
1.
 666  blah  3 . 14  SHIT>> delicious  93  <

just another freak in the Freak Kingdom
...
Рейтинг: 0 / 0
27.07.2005, 22:08
    #33187990
коты
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения константы в struts
но это, естественно, решение в лоб, для задачи с классом, который не бин =) обойти геморрой с таглибом можно, засунув в начале сессии атрибут

request.getSession().setAttribute("const", C.getC());

и, реализовав получение констант с помощью геттеров, делать
<bean:write name="const" property="strVal" />

just another freak in the Freak Kingdom
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение значения константы в struts / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]