gpt4 book ai didi

jsf - 避免 ManagedBeans 中重复代码的推荐方法是什么?

转载 作者:行者123 更新时间:2023-12-01 22:30:56 28 4
gpt4 key购买 nike

为了获得良好的用户反馈,我在网络应用程序的多个站点上使用消息。

要添加消息,我简单地使用:

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(type, "", message));

我为typemessage添加了变量,因为它取决于不同的验证。

嗯,我对不同的站点使用不同的ManagedBeans,这很正常。

我想到了,在不同的 ManagedBeans 中添加这些消息的最佳实践是什么。

目前,我总是使用上面的代码片段超过 30 次(而且肯定会越来越多)。

我应该创建带有 SessionScoped 注解的 Bean 还是 @ApplicationScoped ?您还有其他我应该知道的提示吗?

最佳答案

只需将重复的静态代码隐藏到可重用的 static 中即可让它变得更多的方法DRY (“不要重复自己”)。

以最终可以重构的方式设计静态方法,

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(type, "", message));

对于这样的事情,

Messages.addGlobalInfo(message);

或者甚至使用 import static com.example.Messages.*; (Eclipse:Ctrl+Shift+M行):

addGlobalInfo(message);

它不需要是托管 bean,因为它不保存任何状态。此外,您应该为此类实用程序类创建默认构造函数 private ,所以 Java/JSF 可以首先不通过 new 构造它运算符或 Class#newInstance()在反射(reflection)中。如果您使用的是 CDI,如有必要,请使用 @Typed 进行注释。使用空值以防止其通过 Bean<T> 注册为托管 bean 候选者.

@Typed
public final class Messages {

private Messages() {}

// ...
}

JSF 实用程序库 OmniFaces正是有这个实用程序类: org.omnifaces.util.Messages .

关于jsf - 避免 ManagedBeans 中重复代码的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046705/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com