gpt4 book ai didi

java - ManagedBean和xhtml方法调用的设计策略

转载 作者:行者123 更新时间:2023-12-01 14:49:44 25 4
gpt4 key购买 nike

假设我有一个这样的类(class):

@ManagedBean
public class A {

@ManagedProperty("#{B}")
private B b;

private Object o;

public void operation() {
b.methodCall(o);
}

public void setB(B b) {
this.b = b;
}

public Object getO() {
return o;
}

public void setO(Object o) {
this.o = o;
}

}

现在,当我从 xhtml 进行方法调用时,我可以简单地编写:

<p:commandButton actionListener="#{a.operation()}" />

但是我也可以向我的托管 bean 添加 getter:

public B getB() {
return b;
}

并调用与此相同的方法,无需在我的托管 bean 的第一个版本中编写 opera() 方法。

<p:commandButton actionListener="#{a.b.methodCall(b.o)}" />

在我看来,第一种方法在重构时会更容易,因为重构 java 类时有 ide 支持,但同时它让我编写了一个简单的方法,仅作为传递参数的手段。

哪一种方法更好?

最佳答案

我认为这个问题没有直接的答案。该方法应该基于我们的要求。两者都有各自的优点和缺点。

但我可以说的是:- 你的第一种方法更可行。因为在第二种方法中,您应该在 a 中引用 b ,除非确实需要,否则不需要 [ A 不需要知道 B,如果 be 是一个独立的实体]。并且您可以从 spring 容器中获取 B 的实例(这样您就可以避免应用程序中 B 的重复实例),前提是 B 不是在 View 范围内。

第二个问题是当你使用 a.b.method 时,我们应该确保 b 在任何时候都不能为 null。当我们在一个 html 中有不同的实体引用时,应用程序将紧密耦合。如果您计划将 html 用作通用 html,则 html 不能与任何其他实体一起使用。

希望我的解释很清楚。

关于java - ManagedBean和xhtml方法调用的设计策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004909/

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