4
我有一個JSF支持bean設計問題。現在,我的支持bean持有UI顯示信息以及商業模式數據。人們建議模型和觀點應該分開。那麼創建不同的bean來持有UI顯示數據並且讓後臺bean有引用它是不錯的主意?JSF MVC設計問題
我有一個JSF支持bean設計問題。現在,我的支持bean持有UI顯示信息以及商業模式數據。人們建議模型和觀點應該分開。那麼創建不同的bean來持有UI顯示數據並且讓後臺bean有引用它是不錯的主意?JSF MVC設計問題
因此,創建不同的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.
}
與
<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提供的例子。
哇這很快很清楚,非常感謝你的回答 – 2011-04-18 17:05:25