Created
February 9, 2016 17:41
-
-
Save tuxmartin/c7117553b9a6a8f6ba6a to your computer and use it in GitHub Desktop.
Vypis zalomeni radku pomoci <c:out> v JSP pomoci JavaScriptu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> | |
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> | |
<%@ page session="true" contentType="text/html; charset=UTF-8" %> | |
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> | |
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> | |
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> | |
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> | |
<fmt:setLocale value="cs"/> | |
<script> | |
$(document).ready(function() { | |
$('textarea').autosize(); | |
}); | |
</script> | |
<%--Vypis HTML noveho radku <br/> klientovi. | |
<c:out> nahrazuje <br> za HTML entity, ale vypnout to nejde kvuli XSS a podobnym utokum. Vykonaval by se vsechen kod. | |
Jednim ze zpusobu je css "white-space:pre", ale neni idealni. | |
http://stackoverflow.com/questions/14514440/new-line-doesnt-appear-when-using-c-out-tag/14514647#14514647 | |
Moje reseni: Vytahnu si string z databaze a vsechny znaky noveho radku nahradim za mezeru + netisknutelny ASCII znak. | |
Ja jsem zvolil znak "DEC=29, HEX=0x1D, GS, Group Separator", asi je to jedno. Ale zkousel jsem take | |
znak "DEC=3, HEX=0x03, ETX, End of Text" a s nim mi to nefungovalo. | |
Pokud klientovi nefunguej JavaScript, netisknutelny ASCII znak se nezobrazi a zalamovani resi prohlizec, | |
kdyz text dojde na konec stranky. Mezeru proto, ze prohlizec netisknutelny znak nezobrazi a slova, ktera by jinak | |
byla oddelena novym radkem by byla zobrazena dohromady. | |
Pokud JavaScript funguje, nahradi se mezera a ASCII znak za <br /> a prohlizec zalame radky :-) | |
--%> | |
<c:set var="newLine" value="<%= \"\n\" %>" /> <%-- Znak noveho radku musi byt definovany pres JSP Expression. --%> | |
<c:set var="replaceNewLineChar" value="<%= \"\\u0020\\u001d\" %>" /> | |
<script> | |
function newLineHack(id) { | |
$(document).ready(function(){ | |
var s = $('#'+id).html(); | |
s = s.replace(/\u0020\u001d/g,'<br/>'); <%-- \u0020 = mezera, \u001d = "Group Separator" --%> | |
$('#'+id).html(s); | |
}); | |
} | |
newLineHack("postText"); | |
newLineHack("commentText"); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment