दिलचस्प पोस्ट
सीएसवी फ़ाइल को सीधे MySQL में आयात करें जब अपवाद सुरक्षित रूप से संभाला जाता है तो पहले मौका अपवाद संदेशों से बचना असुरक्षित प्लेफ़ॉर्म चेतावनी: एक सच्चे SSLContext वस्तु उपलब्ध नहीं है। यह urllib3 उचित रूप से SSL विन्यस्त करने से रोकता है कैसे 2 गणना तार दिया कोसाइन समानता की गणना करने के लिए? – पायथन एंटिटी फ्रेमवर्क कोड में विदेशी की विशेषता को समझना पहले JTable से एक पंक्ति को कैसे निकालना है? सी # में अंतरफलक और कार्यान्वयन टिप्पणी को सिंक्रनाइज़ करने के तरीके System.Net.Http: नाम स्थान से गुम? (नेट 4.5 का उपयोग करना) JQuery में प्रत्येक () फ़ंक्शन को कैसे तोड़ने / बाहर निकलना है? पायथन फ़ंक्शन एट्रीब्यूट्स – उपयोग और गालियाँ छोरों के साथ `दो 'और ब्लॉक स्कोपिंग का स्पष्टीकरण पायथन के साथ रीडायरेक्ट के यूआरएल कैसे प्राप्त करें जांचें कि कुछ एक्सई प्रोग्राम विंडोज़ पर चल रहा है या नहीं सीओआरएस के माध्यम से अजाक्स अनुरोध के साथ ब्राउज़र पर सेट-कुकी MATLAB का उपयोग करके ब्लैकबोर्ड पाठ कैसे स्पष्ट हो?

जेएसपी (बिना स्क्रिप्टलेट) में स्थिरांक का उपयोग करना

मेरे पास एक वर्ग है जो विभिन्न सत्र विशेषताओं के नामों को परिभाषित करता है, जैसे

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

इन गुणों की उपस्थिति के लिए मैं जेएसपी के भीतर इन स्थिरांकों का उपयोग करना चाहता हूं, जैसे कुछ:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="com.example.Constants" %> <c:if test="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}"> <%-- Do somthing --%> </c:if> 

लेकिन मुझे लगता है कि sytax सही नहीं मिल सकता है। साथ ही, कई जगहों में ऊपर दिए गए लंबे समय तक परीक्षणों को दोहराने से बचने के लिए, मैं परिणाम को स्थानीय (पेज-स्कॉपीड) चर में निर्दिष्ट करना चाहता हूं, और इसके बजाय इसका संदर्भ देता हूं। मेरा मानना ​​है कि मैं इसे <c:set> साथ कर सकता हूं, लेकिन फिर से मैं सही वाक्यविन्यास खोजने के लिए संघर्ष कर रहा हूं।

अद्यतनः नीचे दिए गए सुझाव के अलावा, मैंने कोशिश की:

 <c:set var="nullUser" scope="session" value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" /> 

जो काम नहीं करता इसलिए इसके बजाय, मैंने निरंतर के शाब्दिक मूल्य को प्रतिस्थापित करने की कोशिश की मैंने पृष्ठ की सामग्री के लिए निरंतर भी जोड़ा, इसलिए जब पृष्ठ प्रदान किया जा रहा हो तब मैं निरंतर मूल्य का सत्यापन कर सकूं

 <c:set var="nullUser" scope="session" value="${sessionScope['current.user'] eq null}" /> <%= "Constant value: " + WebHelper.ATTR_CURRENT_PARTNER %> 

यह ठीक काम किया है और यह पृष्ठ पर अपेक्षित मूल्य "current.user" मुद्रित किया है। स्ट्रिंग के शाब्दिक कामों का उपयोग क्यों करते हैं, यह समझाने के लिए मैं एक नुकसान में हूं, लेकिन निरंतर का एक संदर्भ नहीं है, जब दोनों के समान मूल्य होता है मदद…..

Solutions Collecting From Web of "जेएसपी (बिना स्क्रिप्टलेट) में स्थिरांक का उपयोग करना"

यह आपके उदाहरण में काम नहीं कर रहा है क्योंकि ATTR_CURRENT_USER निरंतर JSTL टैगों के लिए दृश्यमान नहीं है, जो उम्मीद करता है कि प्रॉपर्टी को गेटर्स फ़ंक्शन द्वारा सामने लाया जाएगा। मैंने इसे करने की कोशिश नहीं की है, परन्तु आपके स्थिरांक को उजागर करने का सबसे साफ रास्ता असंवैधानिक टैग लाइब्रेरी है ।

ईटीए: मैंने जो पुराना लिंक दिया वह काम नहीं कर रहा था। इस संबंध में नए लिंक मिल सकते हैं: जेएसपी में जावा स्थिरांक

आपके द्वारा देखे जा रहे व्यवहार को स्पष्ट करने के लिए कोड स्निपेट: नमूना वर्ग:

 package com.example; public class Constants { // attribute, visible to the scriptlet public static final String ATTR_CURRENT_USER = "current.user"; // getter function; // name modified to make it clear, later on, // that I am calling this function // and not accessing the constant public String getATTR_CURRENT_USER_FUNC() { return ATTR_CURRENT_USER; } } 

जेएसपी पृष्ठ का स्निपेट, नमूना उपयोग दिखा रहा है:

 <%-- Set up the current user --%> <% session.setAttribute("current.user", "Me"); %> <%-- scriptlets --%> <%@ page import="com.example.Constants" %> <h1>Using scriptlets</h1> <h3>Constants.ATTR_CURRENT_USER</h3> <%=Constants.ATTR_CURRENT_USER%> <br /> <h3>Session[Constants.ATTR_CURRENT_USER]</h3> <%=session.getAttribute(Constants.ATTR_CURRENT_USER)%> <%-- JSTL --%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <jsp:useBean id="cons" class="com.example.Constants" scope="session"/> <h1>Using JSTL</h1> <h3>Constants.getATTR_CURRENT_USER_FUNC()</h3> <c:out value="${cons.ATTR_CURRENT_USER_FUNC}"/> <h3>Session[Constants.getATTR_CURRENT_USER_FUNC()]</h3> <c:out value="${sessionScope[cons.ATTR_CURRENT_USER_FUNC]}"/> <h3>Constants.ATTR_CURRENT_USER</h3> <c:out value="${sessionScope[Constants.ATTR_CURRENT_USER]}"/> <%-- Commented out, because otherwise will error: The class 'com.example.Constants' does not have the property 'ATTR_CURRENT_USER'. <h3>cons.ATTR_CURRENT_USER</h3> <c:out value="${sessionScope[cons.ATTR_CURRENT_USER]}"/> --%> <hr /> 

यह आउटपुट:

स्क्रिप्टलेट्स का उपयोग करना

Constants.ATTR_CURRENT_USER

तात्कालिक प्रयोगकर्ता

सत्र [Constants.ATTR_CURRENT_USER]

मुझे


जेएसटीएल का उपयोग करना

Constants.getATTR_CURRENT_USER_FUNC ()

तात्कालिक प्रयोगकर्ता

सत्र [Constants.getATTR_CURRENT_USER_FUNC ()]

मुझे

Constants.ATTR_CURRENT_USER


विषय बहुत पुराना है, लेकिन वैसे भी .. 🙂

मुझे JSTL के माध्यम से स्थिरांक उपलब्ध कराने के लिए अच्छा समाधान मिला आपको प्रतिबिंब के द्वारा एक नक्शा तैयार करना चाहिए और इसे जहाँ भी आप चाहते हैं उसे डाल दें।

नक्शे में हमेशा स्थिरांक में परिभाषित सभी स्थिरांक होते हैं आप इसे श्रोता के उपयोग से ServletContext में रख सकते हैं और जैसे JSTL में स्थिरांक का आनंद ले सकते हैं:

 ${CONSTANTS["CONSTANT_NAME_IN_JAVA_CLASS_AS_A_STRING"]} 

CONSTANTS यहाँ एक कुंजी है जो आपने संदर्भ में नक्शा डालती है 🙂


निम्नलिखित मेरे कोड का एक टुकड़ा है जो निरंतर फ़ील्ड का मानचित्र बना रहा है:

 Map<String, Object> map = new HashMap<String, Object>(); Class c = Constants.class; Field[] fields = c.getDeclaredFields(); for (Field field : fields) { int modifier = field.getModifiers(); if (Modifier.isPublic(modifier) && Modifier.isStatic(modifier) && Modifier.isFinal(modifier)) { try { map.put(field.getName(), field.get(null));//Obj param of get method is ignored for static fields } catch (IllegalAccessException e) { /* ignorable due to modifiers check */ } } } 

आप constants.ATTR_CURRENT_USER को c: set के साथ एक चर के रूप में परिभाषित कर सकते हैं, जैसा कि नीचे दिया गया है:

 <c:set var="ATTR_CURRENT_USER" value="<%=Constants.ATTR_CURRENT_USER%>" /> <c:if test="${sessionScope[ATTR_CURRENT_USER] eq null}"> <%-- Do somthing --%> </c:if> 

स्थिर संपत्तियां EL में उपलब्ध नहीं हैं मैंने जो वैकल्पिक हल उपयोग किया है वह एक गैर-स्थिर वैरिएबल बनाने के लिए है जो स्वयं को स्थैतिक मान में निर्दिष्ट करता है।

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

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

 ${bean.manager_role} 

http://www.ninthavenue.com.au/java-static-constants-in-jsp-and-jsf-el पर पूर्ण कोड

मैं चर्चा के लिए देर हो चुकी हूं, लेकिन मेरा दृष्टिकोण थोड़ा अलग है। मैं एक कस्टम टैग हैंडलर का उपयोग करने के लिए JSP पृष्ठों को स्थिर मूल्यों (संख्यात्मक या स्ट्रिंग) की आवश्यकता है। यहाँ देखें कि मैंने यह कैसे किया:

मान लीजिए मेरे पास एक वर्ग है जो सभी स्थिरांक रखता है:

 public class AppJspConstants implements Serializable { public static final int MAXLENGTH_SIGNON_ID = 100; public static final int MAXLENGTH_PASSWORD = 100; public static final int MAXLENGTH_FULLNAME = 30; public static final int MAXLENGTH_PHONENUMBER = 30; public static final int MAXLENGTH_EXTENSION = 10; public static final int MAXLENGTH_EMAIL = 235; } 

मेरे पास यह अत्यंत सरल कस्टम टैग है:

 public class JspFieldAttributes extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().setAttribute("maxlength_signon_id", AppJspConstants.MAXLENGTH_SIGNON_ID); getJspContext().setAttribute("maxlength_password", AppJspConstants.MAXLENGTH_PASSWORD); getJspContext().setAttribute("maxlength_fullname", AppJspConstants.MAXLENGTH_FULLNAME); getJspContext().setAttribute("maxlength_phonenumber", AppJspConstants.MAXLENGTH_PHONENUMBER); getJspContext().setAttribute("maxlength_extension", AppJspConstants.MAXLENGTH_EXTENSION); getJspContext().setAttribute("maxlength_email", AppJspConstants.MAXLENGTH_EMAIL); getJspBody().invoke(null); } } 

तो मेरे पास एक StringHelper.tld है। अंदर, मेरे पास यह है:

 <tag> <name>fieldAttributes</name> <tag-class>package.path.JspFieldAttributes</tag-class> <body-content>scriptless</body-content> <info>This tag provide HTML field attributes that CCS is unable to do.</info> </tag> 

JSP पर, मैं StringHelper.tld सामान्य तरीके शामिल हैं:

 <%@ taglib uri="/WEB-INF/tags/StringHelper.tld" prefix="stringHelper" %> 

अंत में, मैं टैग का उपयोग करता हूं और EL का उपयोग करते हुए आवश्यक मान लागू करता हूं।

  <stringHelper:fieldAttributes> [snip] <form:input path="emailAddress" cssClass="formeffect" cssErrorClass="formEffect error" maxlength="**${maxlength_email}**"/>&nbsp; <form:errors path="emailAddress" cssClass="error" element="span"/> [snip] </stringHelper:fieldAttributes> 

ईएल रिज़ॉल्वर श्रृंखला में एक कस्टम ईएल रिस्लावर को प्लगइन करें, जो स्थिरांक को हल करेगा। एक ईएल रिज़ॉल्वर जावा क्लास javax.el.ELResolver क्लास का विस्तार कर रहा है ।

धन्यवाद,

सबसे पहले, आपके सिंटैक्स में एक अतिरिक्त "]" था जो एक त्रुटि पैदा कर रहा था।

इसे ठीक करने के लिए, और एक चर सेट करने के लिए आप ऐसा करेंगे:

 <c:set var="nullUser" scope="session" value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" /> <c:if test="${nullUser}"> <h2>First Test</h2> </c:if> <c:if test="${nullUser}"> <h2>Another Test</h2> </c:if>