2011-08-05 2 views
1

멋진 기능을 갖춘 MyFaces CODI를 사용해 보았습니다. 매우 유용한 것은 typesafe 탐색입니다. 내 컨트롤러 빈에서 액션 메소드의 결과를 다음과 같이 지정할 수 있습니다.JSF : MyFaces CODI typesafe 탐색 및 f : viewParam

public Class<? extends ViewConfig> goBack() { 
    return Pages.ListView.class; 
} 

모든 개발 IDE의 과도한 리팩터링 능력 때문에 정말 멋지다.

그러나이 기능을 사용하려면 viewParameter를 다음보기로 전달할 때 문제가 있습니다. 이 같은이 액션 메소드를 호출있는 명령을 사용해야합니다 :이있는 명령을 사용하는 경우 나 매개 변수를 전달할 수 없습니다

<h:commandButton id="backButton" value="#{msgs.Button_Back}" 
action="#{viewBean.goBack()}" /> 

. A "정상"버튼 또는 링크는 그것을 할 것입니다 :

<h:button id="backButton" value="#{msgs.Button_Back}" outcome="siteBefore.xhtml"> 
    <f:param name="itemId" value="5" /> 
</h:button> 

단점은 "정상"버튼 액션 메소드를 사용하지 않는 때문에 내가 CODI의 형태 보증 된 내비게이션의 장점에 참여할 수 없다는 것입니다.

이렇게 두 기능을 결합 할 수 있습니까? (viewparams 전달 및 typesafe 탐색 사용)

미리 감사드립니다!

답변

0

@StevenR

형태 보증 된 내비게이션을 사용할 때 당신이 전향 적 기능처럼 보인다 자신의 문제 추적 시스템을 따르는 경우 CODI 그러나, viewParams의 포함을 지원하지 않습니다

https://issues.apache.org/jira/browse/EXTCDI-171

문제의 역사에서 최근에 (~ 4 주 전에) 상태를 업데이트했다고 말할 수 있으며 곧 포함될 수 있습니다. 어쩌면 comitters 중 하나가이 게시물을 따르고 있으며이 새로운 기능에 대한 대략적인 시간대로 우리를 업데이트 할 수 있습니까?

은 또한 형식 안전한 항해의 특징은 JSF 스펙에서 논의되었습니다

내가 좋을 것 해결 방법으로 http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-977

합니다 (CODI 위키에서 힌트를 따라 아래 URL의 일부를 참조 할) 그리고 Pages.ListView.class.getName()을 사용하여 backing bean의 액션 메소드 내에서 추가 viewParams를 연결할 수 있습니다. 이 방식으로 탐색이 유형에 안전하며 IDE의 리팩토링 기능을 활용할 수 있습니다. 만 PARAMS는

난 당신이

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 

여기 단점처럼 여물을 걸을 필요가 없습니다 당신의 <f:attribute/> 태그를 사용 제안이 어렵다 ... 안전 유형이 방법으로되지 않을 것 코드 깊숙한 곳의 매개 변수 이름입니다. CODI 그들은 당신이 찾고있는 무엇을 구현

cwiki.apache.org/EXTCDI/jsf-usage.html#JSFUsage-TypesafeNavigation

관련 문제