Straipsniai: Java SE/EE

JSTL URL enkodingo problema

Sukurta 2009-02-20 12:31 (Atnaujinta 2009-05-06 14:10)

JSTL (JavaServer Pages Standard Tag Library) biblioteka turi problemą. Visi JavaEE mėgėjai ir šiaip prijaučiantys žino, kad HTTP Query parametrai atskiriami & simboliu. Viskas OK. Bėda ta, kad kažkas sugalvojo, jog naudojant <c:url/> tagą su parametrais (<c:param/>) šitas simbolis neužkoduojamas &amp; seka. Dėl to bet kokios pastangos, kad XHTML puslapiukas, sugeneruotas naudojant JSP, atitiktų standartus, nueina šuniui ant uodegos.

Atradau du šios problemos sprendimo būdus:

  • Galima naudoti <c:out value="${someURL}" escapeXml="true"/>. Bet man šitaip nepatinka: per daug rašymo, ypač, kai nuorodų yra daug (nepamirškim, kad prieš tai reikia ir <c:url/> panaudot);
  • Arba galima parsipūsti JSTL source'ą, susirasti ParamSupport.aggregateParams() metodą org.apache.taglibs.standard.tag.common.core pakete, pakeisti ten esančius du & simbolius į &amp;, subuildinti naują JSTL ir pakeisti seną biblioteką nauja. Aš kaip tik taip ir padariau.

Beje, abu šiuos variantus radau čia.

Spreadfirefox Affiliate Button Valid XHTML 1.0 Transitional Valid CSS!