Oto jak mój commandLink
pracaJak uzyskać dostęp do zarządzanego fasoli i sesji fasoli z serwletu
<p:dataTable value="#{myBean.users}" var="item">
<p:column>
<h:commandLink value="#{item.name}" action="#{myBean.setSelectedUser(item)}" />
</p:column>
</p:dataTable>
następnie w myBean.java
public String setSelectedUser(User user){
this.selectedUser = user;
return "Profile";
}
Załóżmy nazwa użytkownika jest Peter
. Następnie, jeśli kliknę na Peter
, ustawię selectedUser
na obiekt użytkownika Peter, a następnie przekierujemy na stronę profilu, która teraz wyświetla informacje z selectedUser
. Chcę stworzyć ten sam efekt tylko przy użyciu <h:outputText>
, więc przychodzi na myśl żądanie GET. Więc robię to
<h:outputText value="{myBean.text(item.name,item.id)}" />
wówczas metoda text(String name, Long id)
prostu wrócić
"<a href=\"someURL?userId=\"" + id + ">" + name + "</a>"
wszystko, lewa jest stworzenie apletu, złapać że id
, zapytań do bazy danych, aby uzyskać obiekt user
, ustawiony na selectedUser
, z przeadresować. Więc tutaj jest mój aplet
public class myServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long userId = Long.parseLong(request.getParameter("userId"));
}
}
Teraz mam id
, jak mogę uzyskać dostępu do sesji fasoli do przeszukiwania bazy danych dla user
, następnie uzyskać dostęp udało fasola ustawić user
do selectedUser
, a następnie przekierować do profile.jsf
?
Dla 'SessionBean', nie musisz wstrzykiwać adnotacji @EJB? –
Może również. Nie wynikało to z pytania :) To tylko przykład kickoffa, jak wykorzystać '@ ManagedProperty' i' @ PostConstruct', aby zastosować i przetworzyć parametry zapytania. – BalusC
Przykro mi, ale to może być głupie pytanie. Sposób, w jaki kojarzę plik 'jsf' z zarządzanym komponentem bean, to po prostu wywoływanie metody komponentu bean przez' EL'. Komponent bean dla 'profile.jsf' ma zasięg sesji. Wiem, że potrzebuję bean widoku o żądaniu/widoku, ale teraz nie wiem jak powiązać tę fasolę z 'profil.jsf'. Metoda 'init()' nigdy nie uzyska połączenia. –