Правило переписывания OCPsoft больше не работает после обновления с 1.0.5 до 1.1.0
При обновлении OCPsoft Rewrite с версии 1.0.5.Final до 1.1.0.Final следующее правило больше не работает, и я не знаю, как это исправить:
.addRule(
Join.path("/{i}/{d}")
.where("i").matches("[-_a-zA-Z0-9~*]{8}")
.where("d").matches("[-_a-zA-Z0-9~*]{32}")
.to("/resources/html/user/doSomething.html?i={i}&d={d}")
)
В журнале изменений Rewrite есть один момент, который может вам помочь:
Строки конфигурации теперь буквальные. Регулярные выражения должны быть настроены через параметр>, такой как:
.defineRule().when(Path.matches("/{*}").where("*").matches(".*"))
Исключение, которое я получаю, следующее:
Exception starting filter OCPsoft Rewrite Filter
java.lang.NullPointerException
at org.ocpsoft.rewrite.servlet.config.rule.Join.where(Join.java:199)
at org.ocpsoft.rewrite.servlet.config.rule.Join.where(Join.java:47)
at com.myapp.util.RewriteConfigurationProvider.getConfiguration(RewriteConfigurationProvider.java:39)
...
2 ответа
Следующее сработало, мне просто пришлось изменить порядок предложений объединения:
.addRule(
Join.path("/{i}/{d}")
.to("/resources/html/user/doSomething.html")
.where("i").matches("[-_a-zA-Z0-9~*]{8}")
.where("d").matches("[-_a-zA-Z0-9~*]{32}")
.withRequestBinding();
)
Спасибо Линкольну, который понял это и ответил на мой вопрос на форумах поддержки Rewrite.
Хм.. это похоже на ошибку, я постараюсь воспроизвести это, но вам не нужно переопределять {i}
а также {d}
в целевом URL. Join будет обрабатывать это автоматически, если вы используете привязку запроса, например:
.addRule(
Join.path("/{i}/{d}")
.where("i").matches("[-_a-zA-Z0-9~*]{8}")
.where("d").matches("[-_a-zA-Z0-9~*]{32}")
.to("/resources/html/user/doSomething.html").withRequestBinding();
)
Я предполагаю, что если вы сделаете это, ваша проблема исчезнет. Вы также можете использовать .withInboundCorrection()
если вы хотите перенаправить запросы на старый .html
URL на новый URL.
Если у вас все еще есть проблема, пожалуйста, напишите на форумах поддержки, и мы выясним это:)
Извините, что у вас возникли проблемы, надеюсь, больше не будет проблем:)