gpt4 book ai didi

design-patterns - JSF MVC 设计问题

转载 作者:行者123 更新时间:2023-12-04 07:00:56 24 4
gpt4 key购买 nike

我有一个 JSF 支持 bean 设计问题。现在,我的支持 bean 正在保存 UI 显示信息和业务模式数据。人们建议模型和 View 应该分开。那么创建不同的 bean 保存 UI 显示数据并让支持 bean 引用它是个好主意吗?

最佳答案

so is it good idea to create different bean the holding UI display data and have backing have reference to it?



是的,否则您将继续从模型映射数据以查看自己,同时您也可以让 JSF/EL 这样​​做。顺便说一下,它不一定需要是 JSF @ManagedBean .

例如。这很糟糕:
@ManagedBean
@RequestScoped
public class ProductEditor {

private String productName;
private String productDescription;
private BigDecimal productPrice;

public String add() {
Product product = new Product();
product.setName(productName);
product.setDescription(productDescription);
product.setPrice(productPrice);
productService.save(product);
return "view";
}

// In total 6 getters and setters.
}


<h:form>
<h:inputText value="#{productEditor.productName}" />
<h:inputTextarea value="#{productEditor.productDescription}" />
<h:inputText value="#{productEditor.productPrice}">
<f:convertNumber type="currency" currencySymbol="$" />
</h:inputText>
<h:commandButton value="Add" action="#{productEditor.add}" />
</h:form>

这个更好
@ManagedBean
@RequestScoped
public class ProductEditor {

private Product product;

@PostConstruct
public void init() {
product = new Product(); // You could also preload from DB based on some ID as request parameter.
}

public String add() {
productService.save(product);
return "view";
}

// Only 1 getter.
}


<h:form>
<h:inputText value="#{productEditor.product.name}" />
<h:inputTextarea value="#{productEditor.product.description}" />
<h:inputText value="#{productEditor.product.price}">
<f:convertNumber type="currency" currencySymbol="$" />
</h:inputText>
<h:commandButton value="Add" action="#{productEditor.add}" />
</h:form>

另请参阅 this JSF 2.0 tutorial 提供的示例.

关于design-patterns - JSF MVC 设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706128/

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