我有一个 JSF 支持 bean 设计问题。现在,我的支持 bean 保存 UI 显示信息和业务模式数据。人们建议模型和视图应该分开。那么创建不同的 bean 来保存 UI 显示数据并让支持 bean 引用它是个好主意吗?
那么创建不同的 bean 来保存 UI 显示数据并让支持引用它是个好主意吗?
是的,否则您需要不断地将数据从模型映射到自己的视图,同时您也可以让 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.
}
with
<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.
}
with
<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>
另请参阅提供的示例这个 JSF 2.0 教程 http://balusc.blogspot.com/2011/01/jsf-20-tutorial-with-eclipse-and.html#CreateJSFHelloWorldInEclipseTheModel.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)