Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

JSP में रिसोर्स बंडल का उपयोग कैसे करें? (fmt:bundle टैग)

JSP में JSTL fmt:bundle टैग का उपयोग करके अंतर्राष्ट्रीयकरण (i18n)

JSTL (JSP स्टैंडर्ड टैग लाइब्रेरी) का <fmt:bundle> टैग एक रिसोर्स बंडल को निर्दिष्ट स्कोप के लिए उपलब्ध कराता है, जिससे नेस्टेड <fmt:message> टैग्स को बंडल नाम दोहराए बिना कुंजी द्वारा स्थानीयकृत संदेश प्राप्त करने की अनुमति मिलती है।

वाक्यविन्यास

<fmt:bundle basename="bundleName" [prefix="prefix"]>
    <fmt:message key="messageKey"/>
</fmt:bundle>

विशेषताएँ

विशेषताविवरणआवश्यकडिफ़ॉल्ट
basenameरिसोर्स बंडल का आधार नाम (पूरी तरह से योग्य वर्ग नाम)हाँकोई नहीं
prefix<fmt:message> उप-टैग्स में प्रत्येक कुंजी नाम के साथ पूर्वनिर्मित करने का माननहींकोई नहीं

रिसोर्स बंडल बनाना (Java वर्ग)

package com.tutorialspoint;

import java.util.ListResourceBundle;

public class Example_En extends ListResourceBundle {
    @Override
    protected Object[][] getContents() {
        return contents;
    }

    static final Object[][] contents = {
        {"count.one", "One"},
        {"count.two", "Two"},
        {"count.three", "Three"}
    };
}
  1. इस वर्ग को Example.class में संकलित करें
  2. इसे अपने वेब एप्लिकेशन के CLASSPATH में रखें (आमतौर पर WEB-INF/classes)

JSP में उपयोग: prefix के साथ

<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
    <title>JSTL fmt:bundle Tag</title>
</head>
<body>
    <fmt:bundle basename="com.tutorialspoint.Example" prefix="count.">
        <fmt:message key="one"/><br/>
        <fmt:message key="two"/><br/>
        <fmt:message key="three"/><br/>
    </fmt:bundle>
</body>
</html>

आउटपुट

One
Two
Three

JSP में उपयोग: prefix के बिना

<fmt:bundle basename="com.tutorialspoint.Example">
    <fmt:message key="count.one"/><br/>
    <fmt:message key="count.two"/><br/>
    <fmt:message key="count.three"/><br/>
</fmt:bundle>

आउटपुट

One
Two
Three

रिसोर्स बंडल कैसे काम करते हैं

  • कुंजी/मान जोड़े: बंडल्स में स्थानीय-विशिष्ट मानों के लिए कुंजियाँ होती हैं
  • स्थानीय नामकरण: Example_en_US.properties, Example_fr_FR.properties, आदि
  • फॉलबैक: यदि विशिष्ट स्थानीय नहीं मिलता है, तो डिफ़ॉल्ट (Example.properties या Example_En) का उपयोग किया जाता है
  • संकलित वर्ग: ListResourceBundle का विस्तार करने वाले Java वर्ग (प्रदर्शन के लिए तेज़)
  • गुण फ़ाइलें: .properties फ़ाइलें (संपादित करना आसान, पुनः संकलन की आवश्यकता नहीं)

गुण फ़ाइल दृष्टिकोण (वैकल्पिक)


count.one=One
count.two=Two
count.three=Three


count.one=एक
count.two=दो
count.three=तीन

फिर JSP में: <fmt:bundle basename="com.tutorialspoint.Example">

उन्नत उपयोग

नेस्टेड बंडल्स

<fmt:bundle basename="common.Messages">
    <fmt:message key="welcome"/>
    <fmt:bundle basename="module.Specific" prefix="mod.">
        <fmt:message key="title"/>
    </fmt:bundle>
</fmt:bundle>

चर में संदेश संग्रहीत करना

<fmt:message key="welcome" var="welcomeMsg" scope="session"/>
<c:out value="${welcomeMsg}"/>

पैरामीटरीकृत संदेश


<fmt:message key="greeting">
    <fmt:param value="${user.name}"/>
</fmt:message>

सर्वोत्तम अभ्यास

  1. कुंजियों के लिए सुसंगत नामकरण: module.feature.key (उदाहरण: user.profile.name)
  2. हार्डकोडेड स्ट्रिंग्स से बचें JSP में - हमेशा बंडल्स का उपयोग करें
  3. डिफ़ॉल्ट स्थानीय प्रदान करें फॉलबैक के लिए
  4. प्रदर्शन के लिए संकलित वर्ग उपयोग करें (गुण फ़ाइलों की तुलना में तेज़)
  5. बंडल्स को तार्किक रूप से व्यवस्थित करें (मॉड्यूल/सुविधा के अनुसार)
  6. prefix का उपयोग करें दोहराव कम करने के लिए

सामान्य समस्याएं

  • ClassNotFoundException: बंडल वर्ग CLASSPATH में नहीं है
  • MissingResourceException: कुंजी बंडल में नहीं मिली
  • एन्कोडिंग समस्याएं: गुण फ़ाइलों के लिए UTF-8 सुनिश्चित करें
  • कैशिंग: बंडल्स कैश किए जाते हैं; परिवर्तनों के लिए पुनः तैनाती आवश्यक हो सकती है
  1. - JSP में पैरामीट्राइज़्ड SQL क्वेरी का उपयोग कैसे करें?

    <sql:param> टैग का उपयोग <sql:query> टैग और <sql:update> टैग के लिए नेस्टेड एक्शन के रूप में किया जाता है ताकि वैल्यू प्लेसहोल्डर के लिए मान प्रदान किया जा सके। यदि null मान प्रदान किया जाता है, तो मान को प्लेसहोल्डर के लिए SQL NULL पर सेट किया जाता है। विशेषताएं <sql:param>

  1. - C# में XmlSerializer का उपयोग कैसे करें

    सीरियलाइज़ेशन/डी-सीरियलाइज़ेशन डेटा भेजकर और प्राप्त करके किसी अन्य एप्लिकेशन के साथ संचार की अनुमति देता है। XmlSerializer के साथ, आप नियंत्रित कर सकते हैं कि ऑब्जेक्ट्स को XML में कैसे एन्कोड किया जाता है। XML सीरियलाइज़ेशन करने के लिए, आपको निम्नलिखित दो क्लासेज की आवश्यकता होती है - StreamWrit

  1. Windows PC पर Resource Hacker का उपयोग कैसे करें Windows PC पर Resource Hacker का उपयोग कैसे करें

    क्या आपने कभी सोचा है कि आप अपने Windows ऑपरेटिंग सिस्टम में निष्पादन योग्य (.exe) फ़ाइलों को कैसे संशोधित करेंगे ताकि आप इसे अपनी इच्छानुसार कस्टमाइज़ कर सकें? या क्या आपने कभी किसी निष्पादन योग्य फ़ाइल का आइकन बदलना चाहा है, ताकि यह अच्छा दिखे? यदि आपका उत्तर हां है, तो हमारे पास आपके लिए एक विशेष