2008-09-24 16 views
16

में जावा स्थिरांक मेरे पास एक वर्ग है जो विभिन्न स्थिरांकों के नामों को परिभाषित करता है, उदा।जेएसपी

class Constants { 
    public static final String ATTR_CURRENT_USER = "current.user"; 
} 

मैं इस तरह के रूप scriptlet कोड का उपयोग कर बिना किसी JSP के भीतर इन स्थिरांक उपयोग करना चाहते हैं:

<%@ page import="com.example.Constants" %> 
<%= Constants.ATTR_CURRENT_USER %> 

वहाँ अपाचे unstandard taglib है कि इस सुविधा प्रदान करता है में एक टैग प्रतीत होता है। हालांकि, मुझे इस टैगलिब को डाउनलोड करने का कोई तरीका नहीं मिल रहा है। मुझे आश्चर्य हो रहा है कि क्या इसे बहिष्कृत किया गया है और कार्यक्षमता को दूसरे (अपाचे) टैग लाइब्रेरी में ले जाया गया है?

क्या कोई जानता है कि मुझे यह लाइब्रेरी कहां मिल सकती है, या यदि यह उपलब्ध नहीं है, तो अगर कोई अन्य तरीका है तो मैं स्क्रिप्टलेट कोड का उपयोग किए बिना जेएसपी में स्थिरांक तक पहुंच सकता हूं?

चीयर्स, डॉन

उत्तर

3

अंत में मैंने unstandard tag library बिल्ड को ट्रैक किया।

+9

यह लिंक अब काम नहीं करता है – user1884155

-3

तुम क्यों JSP पर निरंतर का मूल्य मुद्रित करना चाहते हैं? निश्चित रूप से आप उन्हें परिभाषित कर रहे हैं ताकि जेएसपी में आप सत्र से ऑब्जेक्ट निकाल सकें और उन्हें पेश करने से पहले अनुरोध कर सकें?

 

<%@ page import="com.example.Constants" %> 
<%@ page import="com.example.model.User" %> 
<% 
User user = (User) session.getAttribute(Constants.ATTR_CURRENT_USER); 
%> 

<h1>Welcome <%=user.getFirstName()%></h1> 

+1

पर पूर्ण कोड आप scriptlet का उपयोग किए बिना इस पुनर्लेखन सकता है, तो आप मेरे सवाल का जवाब दे दिया है होगा। –

2

आवेदन स्टार्टअप पर, आप स्थिरांक ServletContext के लिए कक्षा में जोड़ सकते हैं और उसके बाद

servletContext.setAttribute("Constants", com.example.Constants); 

किसी भी jsp पेज में इसे उपयोग और उसके बाद एक jsp पेज

<c:out value="${Constants.ATTR_CURRENT_USER}"/> 

में इसे का उपयोग (आपको प्रत्येक स्थिरांक के लिए गेटर्स बनाना पड़ सकता है)

+13

मैं वास्तव में प्रत्येक निरंतर –

+2

के लिए गेटर्स बनाने से बचना चाहता हूं servletContext फ़ंक्शन का setAttribute ऑब्जेक्ट को मान पैरामीटर के रूप में प्राप्त करता है। क्या आप वाकई com.example.Constants को स्थानांतरित कर सकते हैं? – nhthai

+0

"एप्लिकेशन स्टार्टअप" कहां है? –

0

आप किस प्रकार की कार्यक्षमता चाहते हैं उपयोग? वह टैग कक्षा के नाम और फ़ील्ड नाम से किसी भी सार्वजनिक वर्ग फ़ील्ड तक पहुंचने में सक्षम हो सकता है?

संकलन समय पर किए गए स्क्रिप्टलेट्स लेकिन टैगलिब क्लास फ़ील्ड एक्सेस को ऐसे जावा एपीआई को रनटाइम पर प्रतिबिंब के रूप में उपयोग करना है। क्या आपको वाकई इसकी ज़रूरत है?

1

बाहर निकलता है another tag library जो समान कार्यक्षमता प्रदान करता है। यह एनम स्थिरांक के लिए भी काम करता है।

0

मैं अपने प्रोजेक्ट में जकार्ता-टैगलिब्स-अस्थिर-20060829.jar का उपयोग करूंगा लेकिन, आप सच हैं, ऐसा लगता है कि यह not available for download anymore है।

मैं आदेश है कि पुस्तकालय प्राप्त करने के लिए है कि मिल गया है मेरी pom.xml में लेकिन मुझे लगता है यह केवल काम करेंगे क्योंकि कि पुस्तकालय अपने स्थानीय भंडार पर है (मैं इसे आधिकारिक खजाने में नहीं मिल सकता है):

<dependency> 
     <groupId>jakarta</groupId> 
     <artifactId>jakarta-taglibs-unstandard</artifactId> 
     <version>20060829</version> 
    </dependency> 

मुझे नहीं पता कि कोई दूसरा विकल्प है या नहीं।

मुझे उम्मीद है क्योंकि यह जेएसपी में स्थिरांक तक पहुंचने का एक अच्छा तरीका था।

1

accessing constants in JSP (without scriptlet)

मेरा जवाब का डुप्लिकेट की तरह लग रहा था:

स्टेटिक गुण ईएल में सुलभ नहीं हैं। मैं जिस वर्कअराउंड का उपयोग करता हूं वह एक गैर स्थैतिक चर बनाने के लिए है जो स्थिर मूल्य को स्वयं निर्दिष्ट करता है।

public final static String MANAGER_ROLE = 'manager'; 
public String manager_role = MANAGER_ROLE; 

मैं गेटटर और सेटर उत्पन्न करने के लिए लोम्बोक का उपयोग करता हूं ताकि यह बहुत अच्छा हो। आपका ईएल इस तरह दिखता है:

${bean.manager_role} 

http://www.ninthavenue.com.au/java-static-constants-in-jsp-and-jsf-el