首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过JSF保存会话属性

通过JSF保存会话属性
EN

Stack Overflow用户
提问于 2014-03-13 14:25:21
回答 2查看 284关注 0票数 0

如何在数据库中存储用户会话属性以及以相同形式提供的其他信息?

代码语言:javascript
复制
<p:outputLabel value="user ID:" for="informer" />
<p:inputText id="informer" value="#{session.getAttribute('userID').toString()}" 
 title="informer" disabled="true" />

只有会话属性被保存为NULL,尽管它出现在form字段中。其他字段被正确保存。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-13 16:01:58

我很惊讶您的JSF实现没有在这方面抛出错误,因为输入组件的value属性需要是可写的,而.toString()生成的字符串显然不是。

下一步是为实际保存数据的字段设置值:

代码语言:javascript
复制
@Entity
public class User {
    private String userId;
    //... other fields
}

@Named @ViewScoped
public class UserBean implements Serializable {
    private User myUser;

    @PostConstruct
    public void init() {
        String uid = FacesContext.getCurrentInstance().getExternalContext()
                .getSessionMap().get("userID").toString();
        myUser = new User();
        myUser.setUserId(uid);
    }
}

在你看来:

代码语言:javascript
复制
<p:outputLabel value="user ID:" for="informer" />
<p:inputText id="informer" value="#{userBean.myUser.userId}" disabled="true" />
票数 1
EN

Stack Overflow用户

发布于 2014-03-13 17:05:53

我将忽略这里的设计问题(mabi已经指出了这一点),我将直接回答具体的问题:只需引用#{sessionScope}提供的会话映射即可。

代码语言:javascript
复制
<p:inputText ... value="#{sessionScope.userID}" />

与具体问题无关的,为了将其打印到输出的唯一目的,不要使用:

代码语言:javascript
复制
#{session.getAttribute('userID').toString()}

这没有任何意义。只需按通常的EL方式:

代码语言:javascript
复制
#{userID}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22381635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档