design-patterns - JSF MVC 设计问题

标签 design-patterns jsf

我有一个 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/

相关文章:

oop - OOP中粒度的含义

Java - 这是一个成语还是模式,没有状态的行为类

java - Controller属于Presentation层?

css - 将 PrimeFaces 与 Bootstrap 一起使用会导致填充/大小/边框发生变化

maven - Jetty 清理 session 错误与 View 范围的 bean

java - 在 Linux 上部署到 Tomcat 时出现 JSF PropertyNotFound

java - 里氏代换原则——如何建模正方形和长方形

java - jsf:请求的资源不可用

jsf - 如何在jsf页面上设置日期模式?

java - 了解 writeDataToPipe