Ich werde mir ziemlich Ziel machen:Wie gibt man Statusmeldungen in JSF zurück?
Ein Benutzer registriert sich, nach dieser Operation register
ich Gratulation sagte einige Nachricht zeigen mag! Herzlich willkommen!, etwas wie das oder eine Nachricht, wenn es ein Problem wie duplicated key
in meiner Datenbank gibt.
Ich weiß schon, wie man einige Nachrichten mit RichFaces zeigt, aber ich möchte es einfach halten, RichFaces vermasselt ein wenig mit CSS, also möchte ich es für jetzt vermeiden.
hier So geht es meine Seite und mein Managed Beans:
<h:form id="form_user">
<h:panelGrid columns="3">
<h:outputLabel for="name" value="Name:" />
<h:inputText id="name" value="#{personc.personb.person.name}">
<f:ajax event="blur" listener="#{personValidate.name}" render="m_name" />
</h:inputText>
<h:message id="m_name" for="name" />
<!--other fields...-->
<h:commandButton value="Register" action="#{personc.register}">
<f:ajax execute="@form" render="@form" />
</h:commandButton>
</h:panelGrid>
</h:form>
Person Controller (nach der MVC-Struktur):
@ManagedBean(name="personc")
@SessionScoped
public class PersonController implements Serializable {
private static final long serialVersionUID = 2000186666864113813L;
// attributes
@EJB PersonEAO personEAO;
private PersonBean personb;
public PersonController() {
personb = new PersonBean();
}
// methods
public String register(){
if (personEAO.register(personb.getUser(), personb.getPerson())){
status = "welcome!";
return "success";
}else{
status = "an error occurs";
return "failure";
}
}
// others methods..
Und die PersonEAO Einheit:
@Stateless
@LocalBean
public class PersonEAO {
@PersistenceContext
EntityManager em;
public PersonEAO() {}
public boolean register(User user, Person person){
try{
em.persist(user);
person.setUser(user);
em.persist(person);
}catch(Exception e){
// would like to treat better the exceptions here
// should I keep returning boolean here ? or a string would be better ?
return false;
}
return true;
}
Ich habe einige Fragen:
Wenn ich weiterhin boolean
von Operationen mit JPA zurückgeben möchte, möchte ich dem Benutzer eine bessere Nachricht sagen, was passiert ist, wie zum Beispiel duplicate key
.
Kleine Bemerkung: '@ LocalBean' in unnötig auf der' PersoneEAO' Bohne. –