我已经使用JSF和PrimeFaces实现了一个登录表单。我在PrimeFaces展示网站上使用了此示例。
我有一个Facelets页面来显示dataTable。现在,我需要将上面的登录表单与此表格页面集成在一起。因此,我在LoginBean.java中添加了几行内容来处理会话属性。
if (username.equals(getUsername_db()) && password.equals(getPassword_db())) {//valid user and paward
loggedIn = true;
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", getUsername_db());
//new lines
FacesContext context2 = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context2.getExternalContext().getSession(true);
session.setAttribute("user", username);
//end of new lines
...
如果用户未登录,我需要在dataTable中隐藏一列。现在我的问题是,如何访问Facelets页面内的会话属性?
您已将登录用户存储为名称为“ user”的会话属性。
因此它在EL中可用如下:
#{user}
您可以只使用empty
EL中的关键字来检查其是否存在(即是否已登录),并且可以使用JSF组件的rendered
属性来指示是否生成HTML输出。
<h:panelGroup rendered="#{not empty user}">
<p>Welcome #{user}, you have been logged in!</p>
</h:panelGroup>
在隐藏表列的特定情况下,只需按以下方式使用它:
<p:column rendered="#{not empty user}">
...
</p:column>
存储会话属性的一种更好的方法是使用ExternalContext#getSessionMap()
。这样,您的代码就不会有臭味了javax.servlet.*
。
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("user", username);
与 具体问题 无关 ,为什么要下面检查?
if (username.equals(getUsername_db()) && password.equals(getPassword_db())) {
您为什么不只使用SELECT ... FROM user WHERE username=? AND password=?
SQL?还是您不信任数据库返回正确的行?
我有一个使用servlet会话属性显示div的问题 我有一个“result.jsp”页面。在jsp中,我有一个“生成URL”链接、一个空的输入文本字段和一个“addThis”div。链接“生成URL”调用jquery ajax方法“utilComp()”,它调用一个设置会话属性“saveLink”、返回一个值并填充空文本字段的servlet。 如果属性会话“saveLink”为空(因为尚未单击生成
我正在Codeigniter中创建API。在这个API中,我为用户提供了一个登录函数。如果登录成功,我将在CI会话中设置用户数据,并将会话返回给用户。 现在,用户可以使用该会话ID来验证他自己的所有其他请求,如添加/更新/删除。基本上,我希望当用户发送下一个请求时,我可以根据他的会话ID验证他的凭据。 客户请求代码: 上面是一个从客户端到服务器的登录请求示例。在服务器端,服务器验证客户端提供的凭据
问题内容: 如何以一种优雅的方式通过id获取任何HTTP会话或Web应用程序(Java 2 EE)中当前所有活动的HTTP会话? 当前,我有一个会话,一旦创建,便将其放入,一切正常,我可以随时通过会话ID从该映射中检索HTTP会话,但是看起来对象将永远不会完成……即使会话使该映射无效仍然引用无效的会话对象…我也已经阅读了这篇文章,在我看来,这是不可接受的… 换句话说,我需要一种可能性来查看任何Ht
你能帮我编写此代码的Spring mvc风格模拟吗? 如何向会话添加由注释注释的元素,然后访问它?
问题内容: 在后台代码中,我设置了一些数据。 问题是如何在javascript中获取会话值(在我的示例中为“示例数据”)并设置一个新值? 问题答案: 使用Java脚本访问和分配会话变量: 使用Javascript分配ASP.NET会话变量: 使用Javascript访问ASP.NET Session变量:
使用WicketTester时,访问会话的属性会引发NullPointerException错误。 wicket 9之前也有类似的问题:单元测试mockito httpSession 讨论建议使用 测试员。getRequest()。getSession()。setAttribute(“用户名”、“测试用户1”); 而不是 测试员。getHttpSession()。setAttribute(“用户名