Kay*_*ser 10 jsf entity backing-beans
将实体用作JSF Backing Beans是否有意义?
@Entity
@ManagedBean
@ViewScoped
public class User {
private String firstname;
private String lastname;
@EJB
private UserService service;
public void submit() {
service.create(this);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者更好的是将它们分开保存并将数据从支持bean传输到最后的实体?
@ManagedBean
@ViewScoped
public class UserBean {
private String firstname;
private String lastname;
@EJB
private UserService service;
public void submit() {
User user = new User();
user.setFirstname(firstname);
user.setLastname(lastname);
service.create(user);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 21
你可以这样做.这在技术上是可行的.但它在功能上确实(设计)没有任何意义.您基本上将模型与控制器紧密耦合.通常,JPA实体(模型)是JSF托管bean(控制器)的属性.这使代码保持干燥.您不希望在所有位置复制相同的属性,更不用说诸如bean验证约束之类的注释.
例如
@ManagedBean
@ViewScoped
public class Register {
private User user;
@EJB
private UserService service;
@PostConstruct
public void init() {
user = new User();
}
public void submit() {
service.create(user);
}
public User getUser() {
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
使用此Facelets页面(查看):
<h:form>
<h:inputText value="#{register.user.email}" />
<h:inputSecret value="#{register.user.password}" />
<h:inputText value="#{register.user.firstname}" />
<h:inputText value="#{register.user.lastname}" />
...
<h:commandButton value="Register" action="#{register.submit}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5743 次 |
| 最近记录: |