Mmhh я знаю, что Вы уже отбросили URLEncoder, но несмотря на то, что говорят документы, я решил дать ему попытку.
Вы сказали:
, Например, учитывая вход:
http://google.com/resource?key=value
я ожидаю вывод:
http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue
Так:
C:\oreyes\samples\java\URL>type URLEncodeSample.java
import java.net.*;
public class URLEncodeSample {
public static void main( String [] args ) throws Throwable {
System.out.println( URLEncoder.encode( args[0], "UTF-8" ));
}
}
C:\oreyes\samples\java\URL>javac URLEncodeSample.java
C:\oreyes\samples\java\URL>java URLEncodeSample "http://google.com/resource?key=value"
http%3A%2F%2Fgoogle.com%2Fresource%3Fkey%3Dvalue
Как ожидалось.
, Какова была бы проблема с этим?
Velocity больше не находится в активной разработке. Freemarker есть.
Freemarker, по моему опыту, намного более гибкий.
Используйте Freemarker, если можете:
Время от времени они пытаются отличаться друг от друга ( пример ).
I ' Я много работал с обоими, и, на мой взгляд, они очень похожи. В язык шаблонов можно встроить так много функций, а все остальное - пустяк.
Цели проектов различны.
Цель Velocity - максимально упростить шаблоны, помочь сохранить разделение между логикой и представлением, чтобы не скользить по скользкому склону при вклеивании кода в шаблоны. Иногда это правильно. Конечно, иногда возможность вставлять сложную логику прямо в шаблоны - это правильно.
Скорость не часто повышается, но это не значит, что она не находится в стадии активной разработки. Пользовательское сообщество большое, код быстрый и стабильный, синтаксис в основном исправлен. За последние несколько лет Freemarker претерпел изменения в синтаксисе шаблонов и в сторону api. Иногда приятно оставлять достаточно хорошо в покое. Опять же, зависит от того, что вы ищете.
Документация Freemarker гораздо более обширна - и это гораздо более сложная часть программного обеспечения.
Многие примеры использования Freemarker сводятся к желанию иметь сложный рабочий процесс шаблонизации и не желанию делать шаг компиляции. В последние годы, вместо того, чтобы бороться с этим с помощью Java, я просто использовал Python или Ruby.
Есть две опубликованные книги о Velocity:
и другие книги, в которых есть главы о нем. Так что, что касается FreeMarker, то у него больше или лучше документации :).