我只是想把我的一个小桌面应用程序移植到网络上。 从几天开始,我试图找出如何在JSF中使用构建器模式(我已经拥有)? 或者我是否必须重构为Bean实体并且不能使用Builder?
请考虑以下代码:
public class MyFacade {
private MyClass bar;
publich save() {
crudService.persist(bar);
}
}
<h:inputText id="name" value="#{MyFacade.bar.property}" />
//submit button
我希望将文本字段值存储到我的DB /实体当然。如果你有正常的后端bean,这很容易。
但是如果我像下面这样创建我的对象呢?
MyClass newObject = MyClass.Builder("mandatory field").setOptionalFields("optional field").build();
如何在jsf中使用它?
非常感谢
答案 0 :(得分:1)
如果我理解正确的话,你应该在JSF应用程序中引入另一种类型的bean,只是为了与你的视图进行交互,并保留你的外观(dao)bean。 你最终会得到这样的东西:
@RequestScoped
public class YourBean{
@Inject
private MyFacade facade;
//bean created with builder
private MyBean bean;
public String someMethodExecutedwithEL(){
//build your object here and save it with the dao layer
facade.save(objectFromBuilder);
}
@PostConstruct
public void init(){
//create your bean with builder pattern
}
}
上面的例子当然只是一个潦草的想法,关键在于没有什么能阻止你使用构建器模式创建对象,只需引入另一层来分离关注点。
编辑:
如果要在jsf页面上使用它们之前创建对象,可以添加带注释的方法@PostConstruct (也更新了代码示例)
可能性是无穷无尽的。
提示 - 考虑使用标准命名约定和常识命名您的类和变量。