@ StevenR
CODI не поддерживает включение viewParams при использовании безопасных типов навигации, однако, если вы следуете их системе отслеживания ошибок, это кажется перспективной функцией:
https://issues.apache.org/jira/browse/EXTCDI-171
Из истории вопроса вы можете сказать, что они недавно обновили статус (~ 4 недели назад), и он может быть добавлен в ближайшее время. Может быть, кто-то из комиттеров следит за этим постом и может сообщить нам приблизительный график для этой новой функции?
Более того, функция безопасной навигации по типу обсуждалась в спецификации JSF:
http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-977
В качестве обходного пути я бы предложил следовать подсказке в вики CODI (см. Часть URL-адреса ниже) и использовать Pages.ListView.class.getName()
, где вы можете объединить дополнительные viewParams в методе действия вашего компонента поддержки. Таким образом, ваша навигация будет безопасна, и вы сможете использовать возможности рефакторинга в IDE. Только параметры не будут в этом случае безопасны от типа ...
Я бы посоветовал вам использовать тег <f:attribute/>
, чтобы вам не приходилось проходить через это, как этот
String viewParam = "";
for (UIComponent comp : event.getComponent().getChildren()) {
if (comp instanceof UIParameter ) {
UIParameter myParameter = (UIParameter) comp;
if (myParameter.getName().equals("myParameterName")) {
viewParam = myParameter.getValue());
}
}
}
// add your viewParam to the navigation string here
Недостатком здесь является жестко закодированное имя параметра где-то глубоко внутри вашего кода. Так что может быть целесообразно провести рефакторинг, когда CODI поставляется с новой функцией
cwiki.apache.org / EXTCDI / JSF-usage.html # JSFUsage-TypesafeNavigation