Aquí es cómo mi trabajo commandLink
Cómo acceder a la sesión de bean y gestionado desde servlet
<p:dataTable value="#{myBean.users}" var="item">
<p:column>
<h:commandLink value="#{item.name}" action="#{myBean.setSelectedUser(item)}" />
</p:column>
</p:dataTable>
después en myBean.java
public String setSelectedUser(User user){
this.selectedUser = user;
return "Profile";
}
Deje que asume el nombre de usuario es Peter
. Luego, si hago clic en Peter
, estableceré que el selectedUser
sea el Objeto del Usuario de Peter, luego lo redirigiré a la página de perfil, que ahora procesa información del selectedUser
. Quiero crear el mismo efecto solo usando <h:outputText>
, así que la solicitud GET viene a la mente. Así que hago esto
<h:outputText value="{myBean.text(item.name,item.id)}" />
entonces el método text(String name, Long id)
acaba de regresar
"<a href=\"someURL?userId=\"" + id + ">" + name + "</a>"
todo lo que la izquierda es la creación de un servlet, coger ese id
, consultar la base de datos para obtener el objeto user
, ajustado a selectedUser
, la redirigir Así que aquí está mi servlet
public class myServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long userId = Long.parseLong(request.getParameter("userId"));
}
}
ahora tengo la id
, ¿cómo puedo acceder a mi bean de sesión para consultar la base de datos para el user
, entonces el acceso bean administrado para establecer el user
a selectedUser
, a continuación, redirigir a profile.jsf
?
Para 'SessionBean', ¿no tienes que insertar la anotación @EJB? –
También puede. Eso no estaba claro en la pregunta :) Es solo un ejemplo de cómo hacer uso de '@ ManagedProperty' y' @ PostConstruct' para aplicar y procesar los parámetros de solicitud. – BalusC
Lo siento, pero esta podría ser una pregunta estúpida. La forma en que asocio el archivo 'jsf' con el bean administrado es básicamente llamar al método del bean vía' EL'. El bean de 'profile.jsf' tiene una sesión con ámbito. Sé que necesito una solicitud/vista de bean con ámbito, pero ahora no sé cómo asociar ese bean a 'profile.jsf'. El método 'init()' nunca recibe llamadas. –