首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF: MyFaces CODI类型安全导航和f:viewParam

JSF: MyFaces CODI类型安全导航和f:viewParam
EN

Stack Overflow用户
提问于 2011-08-05 23:32:11
回答 2查看 519关注 0票数 1

我正在试用MyFaces CODI,它有很棒的特性。一个非常有用的东西是类型安全导航。我可以在我的控制器bean中指定操作方法的结果,如下所示:

代码语言:javascript
复制
public Class<? extends ViewConfig> goBack() {
    return Pages.ListView.class;
}

这真的很酷,因为每个开发IDE都有过多的重构能力。

但是当我想要使用这个特性时,我在将viewParameter传递给下一个视图时遇到了问题。我必须使用命令按钮来调用此操作方法,如下所示:

代码语言:javascript
复制
<h:commandButton id="backButton" value="#{msgs.Button_Back}" 
action="#{viewBean.goBack()}" />

如果我使用这个命令按钮,我不能传递参数。一个“普通”按钮或一个链接就可以做到:

代码语言:javascript
复制
<h:button id="backButton" value="#{msgs.Button_Back}" outcome="siteBefore.xhtml">
   <f:param name="itemId" value="5" />
</h:button>

缺点是“正常”按钮不使用action方法,因此我不能参与CODI类型安全导航的优点。

那么,有没有可能将这两个特性结合起来呢?(传递viewparams和使用类型安全导航)

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-08-20 00:41:07

他们实现了你想要的东西。请参阅https://issues.apache.org/jira/browse/EXTCDI-216

票数 1
EN

Stack Overflow用户

发布于 2011-08-09 03:03:21

@StevenR

CODI在使用类型安全导航时不支持包含viewParams,但是如果你关注他们的问题跟踪系统,它似乎是一个预期的功能:

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

从问题的历史记录可以看出,他们最近(大约4周前)更新了状态,可能很快就会包含进来。也许其中一个comitters正在关注这篇文章,并可以更新我们这个新功能的大致时间线?

此外,在JSF规范中还讨论了类型安全导航的特性:

http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-977

作为一种变通办法,我建议遵循CODI wiki中的提示(参见下面的部分网址),并使用Pages.ListView.class.getName(),您可以在支持bean的操作方法中连接额外的viewParams。这样,您的导航是类型安全的,并且您可以利用IDE的重构功能。只有参数不是类型安全的...

我建议你使用<f:attribute/>标签,这样你就不必像这样走槽了

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6958821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档