首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在绑定到支持bean后获得自定义的后处理?Java Server Faces

如何在绑定到支持bean后获得自定义的后处理?Java Server Faces
EN

Stack Overflow用户
提问于 2009-12-10 23:03:23
回答 3查看 1.3K关注 0票数 1

绑定到支持bean后获得自定义后处理的最佳方式是什么,类似于使用Spring MVC控制器时的onBind事件?

我想我需要一个PhaseListener (在阶段更新模型值之后),如下所示

代码语言:javascript
复制
new PhaseListener() {

    public void beforePhase(PhaseEvent event) {}

    public void afterPhase(PhaseEvent event) {
        // custom post-processing
    }

    public PhaseId getPhaseId() {
        return PhaseId.UPDATE_MODEL_VALUES;
    }

}

这是不是最佳实践?如果不是,我应该使用什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-10 23:11:43

好的,这个功能已经存在,所以你可以自由地使用它。

如果您需要每页(实际上是每个视图)阶段侦听器方法,请使用:

代码语言:javascript
复制
<f:view afterPhase="#{bean.afterPhase}">

如果使用Facelets,则该属性称为afterPhaseListener

票数 2
EN

Stack Overflow用户

发布于 2009-12-10 23:13:12

在JEE5服务器中,JSF1.2可以利用@PostConstruct

在JavaEE5兼容容器中运行的PreDestroy实现必须支持附加@PostConstruct @PreDestroy,以帮助了解managedbean生命周期。

被声明为在请求、会话或应用程序范围内的托管bean上的方法,必须在执行资源注入(如果有的话)之后、将bean放入作用域之前由JSF实现调用。

票数 2
EN

Stack Overflow用户

发布于 2009-12-10 23:20:12

为什么不直接挂在INVOKE_ACTION阶段呢?为此,通常使用bean的操作方法。您可以使用h:commandLinkh:commandButtonUICommand组件来触发事件

代码语言:javascript
复制
<h:form>
    <h:inputText value="#{bean.input}" />
    <h:commandButton value="submit" action="#{bean.submit}" />
</h:form>

Bean看起来像这样:

代码语言:javascript
复制
public String submit() {
    // Do your thing here. The `this.input` is already set.
    return "someNavigationCaseOutcome"; // Can even be null or void for a postback to same page.
}

如果您只想涵盖所有 JSF POST请求,那么PhaseListener确实是最好的解决方案。我宁愿挂在INVOKE_ACTIONbeforePhase上,这会更有意义。

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

https://stackoverflow.com/questions/1881556

复制
相关文章

相似问题

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