Вот как работает мой commandLink
<p:dataTable value="#{myBean.users}" var="item">
<p:column>
<h:commandLink value="#{item.name}" action="#{myBean.setSelectedUser(item)}" />
</p:column>
</p:dataTable>
то в myBean.java
public String setSelectedUser(User user){
this.selectedUser = user;
return "Profile";
}
Предположим, что имя пользователя Peter
. Затем, если я нажму на Peter
, я установил selectedUser
как пользовательский объект Peter, а затем перенаправляется на страницу профиля, которая теперь отображает информацию из selectedUser
. Я хочу создать тот же эффект только с помощью <h:outputText>
, поэтому на этот вопрос приходит запрос GET. Поэтому я делаю это
<h:outputText value="{myBean.text(item.name,item.id)}" />
то метод text(String name, Long id)
возвращает
"<a href=\"someURL?userId=\"" + id + ">" + name + "</a>"
все, что осталось, это создание сервлета, поймать id
, запросить базу данных, чтобы получить объект user
, установить на selectedUser
, перенаправление.
Итак, вот мой сервлет
public class myServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long userId = Long.parseLong(request.getParameter("userId"));
}
}
Теперь у меня есть id
, как мне получить доступ к сеансу bean, чтобы запросить базу данных для user
, а затем получить доступ к управляемому bean, чтобы установить user
в selectedUser
, а затем перенаправить на profile.jsf
?