मेरे पास मेरे जेएसपी पेज में बीन ऑब्जेक्ट्स की एक सूची है, और उनमें से एक टिप्पणी क्षेत्र है। इस फ़ील्ड में न्यूलाइन हो सकती है, और मैं उन्हें जेएसटीएल का उपयोग करके अर्धविराम से बदलना चाहता हूं, ताकि फ़ील्ड को टेक्स्ट इनपुट में प्रदर्शित किया जा सके। मुझे एक समाधान मिला है, लेकिन यह बहुत ही सुरुचिपूर्ण नहीं है। मैं एक संभावना के रूप में नीचे पोस्ट करेंगे।जेएसपी और जेएसटीएल का उपयोग करके मैं न्यूलाइन अक्षरों को कैसे बदल सकता हूं?
उत्तर
यहां एक समाधान है जो मैंने पाया। यह बहुत ही सुरुचिपूर्ण प्रतीत नहीं होता है, हालांकि:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<% pageContext.setAttribute("newLineChar", "\n"); %>
${fn:replace(item.comments, newLineChar, "; ")}
आपको इसे एफएन के साथ करने में सक्षम होना चाहिए: प्रतिस्थापित करें।
आप नीचे दिए गए घोषणा के साथ अपने JSP में टैग पुस्तकालय आयात करने के लिए की आवश्यकता होगी:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
तो फिर तुम अर्धविराम {डेटा} $ में न्यू लाइन की घटनाओं को बदलने के लिए निम्नलिखित अभिव्यक्ति का उपयोग कर सकते हैं:
${fn:replace(data, "\n", ";")}
इस सामग्री पर दस्तावेज़ीकरण बहुत अच्छा नहीं है और मुझे इसका परीक्षण करने का अवसर नहीं मिला है।
मुझे पूरा यकीन है कि मैंने पहले कोशिश की थी, और यह काम नहीं किया। मेरे पास वास्तव में परीक्षण करने का समय नहीं है, हालांकि, मैं गलत हो सकता हूं। – parkerfath
मुझे लगता है कि यह उत्तर मेरे जैसा ही है (नीचे देखें), लेकिन अतिरिक्त पेज के बिना Context.setAttribute()। क्या आपको पता है कि शायद कुछ सेटिंग है जिसे मैंने सेट नहीं किया है जिससे मुझे इस अतिरिक्त विधि को कॉल करने की आवश्यकता हो सकती है? – parkerfath
मुझे यह त्रुटि मिलती है: org.apache.jasper.JasperException: /WEB-INF/jsp/team/alarms.jsp(11,2) "$ {fn: प्रतिस्थापित करें (ब्लॉब," \ n ","; ") } "में अमान्य अभिव्यक्ति है: javax.servlet.jsp.el.ELException:" \ n "" \ "INTEGER_LITERAL>,
आप प्रतिस्थापन करने के लिए अपना स्वयं का जेएसपी फ़ंक्शन लिख सकते हैं।
इसका मतलब है आप की तरह कुछ को रखना होगा:
<%@ taglib prefix="ns" uri="..." %>
...
${ns:replace(data)}
कहाँ ns
एक नामस्थान उपसर्ग है आप को परिभाषित करने और replace
अपने JSP कार्य है।
ये फ़ंक्शंस लागू करने के लिए बहुत आसान हैं (वे केवल एक स्थिर विधि हैं) हालांकि मुझे इस समय इन्हें लिखने के लिए एक अच्छा संदर्भ नहीं दिख रहा है।
आप अपना स्वयं का जेएसपी फ़ंक्शन बना सकते हैं। http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags6.html
यह वही है जो आपको करने की ज़रूरत है।
एक टैग पुस्तकालय वर्णनकर्ता फ़ाइल
/src/META-INF/sf.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>sf</short-name>
<uri>http://www.stackoverflow.com</uri>
<function>
<name>clean</name>
<function-class>com.stackoverflow.web.tag.function.TagUtils</function-class>
<function-signature>
java.lang.String clean(java.lang.String)
</function-signature>
</function>
</taglib>
कार्यों तर्क के लिए एक जावा वर्ग बनाएँ।
com.stackoverflow.web.tag.function.TagUtils
package com.stackoverflow.web.tag.function;
import javax.servlet.jsp.tagext.TagSupport;
public class TagUtils extends TagSupport {
public static String clean(String comment) {
return comment.replaceAll("\n", "; ");
}
}
अपने JSP आप निम्नलिखित तरीके से अपने समारोह का उपयोग कर सकते हैं।
<%@ taglib prefix="sf" uri="http://www.stackoverflow.com"%>
${sf:clean(item.comments)}
$ {sf: clean (item) होना चाहिए .comments)} ... मैंने इस समाधान का उपयोग किया .. स्क्रिप्टलेट की तुलना में क्लीनर लगता है – danb
धन्यवाद danb, मैंने अपनी पोस्ट – Geekygecko
@danb अपडेट की है: आपने मेरा जवाब छोड़ा है? http://stackoverflow.com/questions/58054/how- कैन-आई-प्रतिस्थापन-न्यूलाइन-वर्ण-उपयोग-जेएसपी-एंड-जेएसटीएल/16 9 0 9 42 # 16 9 0 9 42 – BalusC
var सेट करते समय मूल्य में, डबल कोट्स के बीच ENTER दबाएं।
$ {fn: की जगह (डेटा, newLineChar, ",")}
यह समाधान अपने खुद के समाधान जो स्थापित कर रही है pagecontext सीधे विशेषता की तुलना में अधिक सुंदर है।आप इस के लिए <c:set>
टैग का उपयोग करना चाहिए:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:set var="newLine" value="\n"/>
${fn:replace(data, newLine, "; ")}
Btw: ${fn:replace(data, "\n", ";")}
काम नहीं करता है।
यह मेरे लिए राल 3 में काम नहीं करता है, जबकि पेज कॉन्टेक्स्ट स्क्रिप्टलेट का उपयोग करने वाला शीर्ष उत्तर करता है। – pimlottc
मुझे लगता है कि यह एक होगा बग क्योंकि मानकों के मुताबिक इसे काम करना चाहिए। – Bousch
@pimlottc प्रतिनिधि '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' {'{nn," \ n ","; "}} और इसे काम करना चाहिए:' $ {fn: प्रतिस्थापित करें (डेटा, '\ n', ' ; ')} '। अन्यथा, उदाहरण के लिए, यह काम नहीं करेगा: '
\ n ईएल अभिव्यक्ति में न्यूलाइन वर्ण का प्रतिनिधित्व नहीं करता है।
समाधान जो pageContext
को न्यूलाइन वर्ण में विशेषता देता है और उसके बाद जेएसटीएल के fn:replace
फ़ंक्शन के साथ इसका उपयोग करता है।
हालांकि, मैं इस समस्या को हल करने के लिए जकार्ता स्ट्रिंग टैब लाइब्रेरी का उपयोग करना पसंद:
<%@ taglib prefix="str" uri="http://jakarta.apache.org/taglibs/string-1.1" %>
...
<str:replace var="result" replace="~n" with=";" newlineToken="~n">
Text containing newlines
</str:replace>
...
आप उपयोग कर सकते हैं जो कुछ भी आप newlineToken के लिए चाहते हैं; "~ n" उस पाठ में दिखने की संभावना नहीं है जिसे मैं प्रतिस्थापन कर रहा हूं, इसलिए यह मेरे लिए उचित विकल्प था।
यह मेरे लिए काम नहीं करता:
<c:set var="newline" value="\n"/>
${fn:replace(data, newLine, "; ")}
यह करता है:
<% pageContext.setAttribute("newLineChar", "\n"); %>
${fn:replace(item.comments, newLineChar, "; ")}
में समाधान का काम करता है ये ऊपर दिए गए उत्तर हैं, है ना? हो सकता है कि उन्हें दोहराने के बजाए पहले से दिए गए उत्तरों पर टिप्पणी करना या ऊपर उठाना बेहतर होगा। – parkerfath
मुझे एक ही समस्या है, यह मेरा हल है, धन्यवाद, लेकिन पहला क्यों काम नहीं करता है? –
@parkerfath इस उत्तर का उच्च-रैंक संस्करण यह चेतावनी नहीं देता है कि सी: सेट या इनलाइन संस्करण अक्सर चुपचाप विफल हो जाएंगे। – LateralFractal
बस ;
द्वारा \n
को बदलने के लिए fn:replace()
समारोह का उपयोग करें।
${fn:replace(data, '\n', ';')}
मामले आप अपाचे के ईएल कार्यान्वयन के बजाय Oracle की ईएल संदर्भ कार्यान्वयन का उपयोग कर रहे (यानी जब आप बिलाव, TomEE, JBoss, आदि के बजाय ग्लासफिश, Payara, WildFly, WebSphere, आदि का उपयोग कर रहे हैं), तो आपको बैकस्लैश से फिर से बचने की जरूरत है।
JSTL में एक बहु-पंक्ति स्ट्रिंग एक पाठ क्षेत्र के शीर्षक विशेषता के रूप में जोड़ा जाता है:
${fn:replace(data, '\\n', ';')}
रिकॉर्ड के लिए, मैं इस समस्या से निपटने जबकि इस पोस्ट भर में आया था। जावास्क्रिप्ट फिर इसे टेक्स्टरेरा के डिफ़ॉल्ट पाठ के रूप में जोड़ता है। फोकस पर इस पाठ को साफ़ करने के लिए मूल्य को शीर्षक के बराबर करने की आवश्यकता है ... लेकिन विफल रहता है क्योंकि कई टेक्स्ट-एडिटर्स \ n \ n के बजाय \ r \ n डालते हैं।
<% pageContext.setAttribute("newLineChar", "\r"); %>
<c:set var="textAreaDefault" value="${fn:replace(textAreaDefault, newLineChar, '')}" />
अधिक आसानी से:: तो follownig अवांछित \ r से छुटकारा मिल जाएगा
<str:replace var="your_Var_replaced" replace="\n" with="Your ney caracter" newlineToken="\n">${your_Var_to_replaced}</str:replace>
आप वास्तव में क्या जरूरत है एक \ N प्रतीक आप here से सलाह का उपयोग कर सकते है:
${fn:replace(text, "
", "<br/>")}
या
<c:set var="nl" value="
" /><%-- this is a new line --%>
इसमें आपकी स्ट्रिंग शाब्दिक में नई पंक्ति शामिल है।
यह स्वीकार किए जाते हैं जवाब देने के लिए इसी तरह की है (क्योंकि यह नहीं बल्कि ईएल से न्यू लाइन का प्रतिनिधित्व करने के जावा उपयोग कर रहा है) लेकिन यहाँ < c: सेट/> तत्व विशेषता सेट करने के लिए प्रयोग किया जाता है:
<c:set var="newline" value="<%= \"\n\" %>" />
${fn:replace(myAddress, newline, "<br />")}
निम्नलिखित स्निपेट भी काम करता है, लेकिन < ग की दूसरी पंक्ति: सेट/> तत्व इंडेंट नहीं किया जा सकता है (और भद्दा लग सकता है):
<c:set var="newline" value="
" /><!--this line can't be indented -->
${fn:replace(myAddress, newline, "<br />")}
बढ़िया! मुझे नहीं पता कि क्यों स्वीकार्य उत्तर काम नहीं कर रहा है। तुम जानते हो क्यों? –
पहला स्निपेट मेरे लिए काम करता था। धन्यवाद! –
इस JSP ईएल के लिए एक वैध समाधान है:
"${fn:split(string1, Character.valueOf(10))}"
- 1. PowerShell का उपयोग करके मैं न्यूलाइन को कैसे बदल सकता हूं?
- 2. मैं पर्ल का उपयोग करके पासवर्ड कैसे दर्ज कर सकता हूं और अक्षरों को '*' से बदल सकता हूं?
- 3. जेएसपी/जेएसटीएल
- 4. क्या मैं पर्यावरण के मूल्य को बदल सकता हूं। न्यूलाइन?
- 5. जेएसपी/जेएसटीएल/ईएल
- 6. मैं रेगेक्स का उपयोग करके ब्रांड्स में स्ट्रिंग को कैसे बदल सकता हूं?
- 7. RegExp का उपयोग करके मैं बैकस्लैश को डबल बैकस्लैश से कैसे बदल सकता हूं?
- 8. पायथन-एक्सलिब का उपयोग करके मैं विंडो को कैसे स्थानांतरित/आकार बदल सकता हूं?
- 9. जेएसपी/जेएसटीएल: एक कस्टम टैग
- 10. मैं एमएसबिल्ड का उपयोग करके असेंबली प्रोडक्ट, असेंबली टाइटल कैसे बदल सकता हूं?
- 11. कैमरजेएस का उपयोग करके मैं एक छवि कैसे बदल सकता हूं?
- 12. जेएसटीएल टैग (डॉट कैरेक्टर) का उपयोग करके जेएसपी ईएल से बचें
- 13. जेएसटीएल/जेएसपी में लूप के अंदर एक स्ट्रिंग को कैसे जोड़ सकता हूं?
- 14. एमवीसी 4 में SimpleMembership का उपयोग करके मैं पासवर्ड कैसे रीसेट या बदल सकता हूं?
- 15. मैं कुछ पाठ को लोअरकेस में कैसे बदल सकता हूं और jQuery का उपयोग करके हाइफ़न के साथ रिक्त स्थान बदल सकता हूं?
- 16. जेएसपी या जेएसटीएल में पृष्ठ का नाम कैसे प्राप्त करें?
- 17. जेएसपी/जावा में मैं एसईटी द्वारा गेटर/सेटर को कैसे बदल सकता हूं। अधिक सामान्य?
- 18. PowerShell का उपयोग करके मैं फ़ाइलों का नाम बदल सकता हूं?
- 19. मैं जावास्क्रिप्ट में रेगेक्स अक्षरों को कैसे जोड़ सकता हूं?
- 20. मैं छवि बटन का आकार कैसे बदल सकता हूं?
- 21. पायथन: न्यूलाइन अक्षरों को जोड़ने से फ़ाइल इनपुट को रोकें
- 22. SQL वाक्यविन्यास का उपयोग करके प्राथमिक कुंजी बाधा को कैसे बदल सकता हूं?
- 23. जावास्क्रिप्ट का उपयोग करके मैं div कैसे बना सकता हूं और शैली बना सकता हूं?
- 24. मैं एक पृष्ठ के भीतर एचटीएमएल/जेएसपी का पुन: उपयोग कैसे कर सकता हूं?
- 25. nHibernate का उपयोग करके, मैं असामान्य कैसे पढ़ सकता हूं?
- 26. अमरूद का उपयोग करके मैं यह कैसे कर सकता हूं?
- 27. रुबी कॉल का उपयोग करके एसएसएच और एससीपी का उपयोग करके मैं फ़ाइलों को कैसे स्थानांतरित कर सकता हूं?
- 28. अक्षरों के लिए नियमित अभिव्यक्तियों (दोनों एसीआईआई और गैर एएससीआई) का उपयोग करके, मैं विम में कैसे खोज सकता हूं?
- 29. एंड्रॉइड मैं बहिष्कृत टैबहोस्ट को कैसे बदल सकता हूं?
- 30. मैं x-coordinates अक्षरों को कैसे बना सकता हूं?
मैं इसे स्वीकार कर रहा हूं, भले ही यह मेरा उत्तर है, क्योंकि यह सबसे आसान है और मैंने इसे वास्तव में काम करने के लिए पाया है। – parkerfath
यह अनावश्यक है। बस बैकस्लैश से बचें: http://stackoverflow.com/questions/58054/how-can-i-replace-newline-characters-using-jsp-and-jstl/1690942#1690942 – BalusC
मैंने बैकस्लैश से बचने की कोशिश की, जो नहीं या तो काम नहीं करते हैं। पेज कॉन्टेक्स्ट विशेषता सेट करने की मेरी उपरोक्त विधि अभी भी एकमात्र तरीका है जिसे मैं इसे काम कर सकता हूं। हालांकि बलुस के अनुसार, आप कुछ सरल तरीकों से बेहतर भाग्य प्राप्त कर सकते हैं। यहां सभी विकल्पों के लिए शायद अच्छा है। – parkerfath