Жадный будет потреблять как можно больше. Из http://www.regular-expressions.info/repeat.html мы видим пример попытки сопоставить HTML-теги с <.+>
. Предположим, что у вас есть следующее:
Hello World
Вы можете подумать, что <.+>
(.
означает любой символ новой строки и +
означает один или несколько ) будет соответствовать только и
, когда на самом деле это будет очень жадно и перейти от первого
<
к последнему >
. Это означает, что он будет соответствовать Hello World
вместо того, что вы хотели.
Сделать это ленивым (<.+?>
) предотвратит это. Добавив ?
после +
, мы просим его повторить как можно меньше , поэтому первый >
, с которым он сталкивается, - это то, где мы хотим остановить сопоставление.
Я бы посоветовал вам скачать RegExr , отличный инструмент, который поможет вам исследовать регулярные выражения - я использую его все время.
Как это сделать, чтобы константы были доступны как из бэкэндов, так и из файлов XHTML?
blockquote>В резервных компонентах это, очевидно, легко. Поскольку они просто классы Java, это не отличается от «нормального» Java-способа. Вы можете использовать поля
enum
s илиpublic static final
. В взглядах это совсем другая история. До следующей версии 3.0 EL не поддерживает константы.Я бы предложил использовать перечисления, поскольку EL имеет скрытую поддержку для них в строковых сравнениях. Он не выполняет никаких проверок безопасности типа / времени выполнения, но вы можете использовать имя перечисления в виде строки. Например,
<h:someComponent ... rendered="#{order.status == 'SHIPPING'}" />
Если вы предпочитаете больше кода самодокументирования и проверки времени выполнения (нет, проверка на компиляцию невозможна), вы можете рассмотреть возможность использования OmniFaces
<o:importConstants>
.<o:importConstants type="com.example.OrderStatus" /> <h:someComponent ... rendered="#{order.status == OrderStatus.SHIPPING}" />
Это ИМО лишь немного более неуклюжий. Тем не менее, во время разработки проверка работоспособности. Опечатка легко контролируется.
В предстоящем EL 3.0 ( JSR-341 , части Java EE 7), можно ссылаться на константы одинаково. См. Также Как ссылаться на константы в EL? Для этого требуется только программный импорт констант, поскольку для этого нет стандартного тега JSP / Facelets.