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

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



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

Код: 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
Получение значения константы в struts
    #33187990
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но это, естественно, решение в лоб, для задачи с классом, который не бин =) обойти геморрой с таглибом можно, засунув в начале сессии атрибут

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

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

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


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