Chciałem się dowiedzieć na prostym przykładzie jak przekazywać dane z JSF do restowego Controllera i żeby zapisać je do bazy dancyh przy uzyciu JPA i klasy DAO ?
CO chcesz osiągnąć ?. Dziwny zestaw strasznie
JSF to renderowania po stronie serwera ( i z tego co słyszałem nienajlepsze).
ReactJS to renderowanie po stronie klienta więc niezbyt to siebie pasuje...
W JSF nie używa się restowych kontrolerów, dane mapuje się przez ExpressionLanguage na atrybuty/metody klas, np tak.:
// dzieki temu @Named poniżej, inputy w HTML mapujemy np. tak:
// <h:inputText value="#{createUser.user.username}" />
// <h:commandButton action="#{createUser.on_createUser_ButtonClick}" value="zapisz" />
@Named
@ViewScoped
public class CreateUser implements Serializable {
@PersistenceContext
EntityManager em;
User user;
public User getUser(){ return user; } //musi byc getter
@PostConstruct
void init(){
User user = new User();
}
@Transactional
public String on_createUser_ButtonClick() {
em.persist(user);
em.flush();
em.refresh(user);// flush + refresh zeby wziac id wygenerowane przez baze danych
return "/user/details?userid="+user.getId()+"&faces-redirect=true&includeViewParams=true";
}
}
@Named
powoduje że z szablonu HTML możemy odwoływać się do klasy pod jej nazwą zaczętą z małej litery (np. createUser
), potem jak chcemy odwoływać się do kolejnych pól (np. #{createUser.user.username}
), to te pola muszą mieć gettery ( i czasami settery), a metody muszą być chyba publiczne
A gdybym chciał później użyć backendu uzyć do stworzenia aplikacji na androida?
Wolo napisał(a):
A gdybym chciał później użyć backendu uzyć do stworzenia aplikacji na androida?
No to możesz sobie osobno napisać taki restowy "kontroler", a zapytanie do bazy oddelegować do ejb czy czego tam używasz
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.