首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编辑commandLink转到编辑页面,但不将值填充到输入字段

编辑commandLink转到编辑页面,但不将值填充到输入字段
EN

Stack Overflow用户
提问于 2014-10-09 18:57:21
回答 1查看 891关注 0票数 1

当从JDBC搜索填充的datalist调用bean值时,我的编辑页面不会显示bean值,但是如果列表不是来自JDBC搜索,则可以正常工作。

delete链接工作正常,但编辑链接只返回字段中没有填充值的编辑页面。

我的豆是ViewScoped豆。

datalist显示页面:

代码语言:javascript
运行
复制
<h:form rendered="#{not empty usersManagedBean.usersList}" id="form">                            
<div class="table-responsive">
    &nbsp;
    <h:dataTable value="#{usersManagedBean.userModel}" 
                 var="showUser"
                 styleClass="table table-striped table-bordered table-hover">
        <h:column>
            <f:facet name="header">
                Username
            </f:facet> 
            <h:outputText value="#{showUser.username}"/>
        </h:column>
        <h:column>
            <f:facet name="header">
                First Name
            </f:facet>                                         
            <h:outputText value="#{showUser.firstname}"/>
        </h:column>
        <h:column>
            <f:facet name="header">
                Last Name
            </f:facet>                                         
            <h:outputText value="#{showUser.lastname}"/>
        </h:column>
        <h:column>
            <f:facet name="header">
                Security Level
            </f:facet>                                         
            <h:outputText value="#{showUser.groupname}"/>
        </h:column> 
        <h:column rendered="false">
            <f:facet name="header">
                Security Level
            </f:facet>                                         
            <h:outputText value="#{showUser.id}"/>
        </h:column>                                             
        <h:column>
            <h:commandLink value="Edit" 
                           action="#{usersManagedBean.updateUser()}">
            </h:commandLink>
            ||
            <h:commandLink value="Delete" 
                           onclick="if (!confirm('Are you sure, you want to delete #{showUser.username}?')) {
                        return false;
                    }
                    ;
                    return true;
                    " action="#{usersManagedBean.deleteUser(showUser)}">
            </h:commandLink>
        </h:column>
    </h:dataTable>                          
        <h:link outcome="AddUser.xhtml" value="Add New User"/>
</div>

编辑页面:

代码语言:javascript
运行
复制
                                    <h:form>
                                    <div class="form-group">
                                        <label>First Name:</label>
                                        <h:inputText id="firstname" styleClass="form-control" value="#{usersManagedBean.user.firstname}"></h:inputText>
                                        <label>Last Name:</label>
                                        <h:inputText id="lastname" styleClass="form-control" value="#{usersManagedBean.user.lastname}"></h:inputText>
                                        <label>Username:</label>
                                        <h:inputText id="username" styleClass="form-control" value="#{usersManagedBean.user.username}"></h:inputText>
                                    <div class="form-group">
                                        <label>Security Level:</label>
                                        <h:selectOneMenu id="roleSelect" value="#{usersManagedBean.user.groupname}" styleClass="form-control">
                                            <f:selectItem itemLabel="----" itemValue="----"/>
                                            <f:selectItem itemLabel="Administator" itemValue="admin"/> 
                                            <f:selectItem itemLabel="User" itemValue="user"/>                                                                                                                   
                                        </h:selectOneMenu>
                                    </div>
                                        <label>Password:</label>                                            
                                        <h:inputSecret id="password" styleClass="form-control" value="#{usersManagedBean.user.password}" required="true" requiredMessage="Enter Password"/>
                                        <h:message for="password" style="color:red"/>
                                        <label>Confirm Password:</label>
                                        <h:inputSecret id="password2" styleClass="form-control" required="true" requiredMessage="Re-enter Password"/>
                                        <h:message for="password2" style="color:red" />
                                        <o:validateEqual components="password password2" message="Passwords don't match" showMessageFor="password2"/>

                                    </div>
                                    <h:commandButton value="Update" type="submit" styleClass="btn btn-default" action="#{usersManagedBean.saveUser()}"></h:commandButton>
                                    ||
                                    <h:commandButton value="Cancel" onclick="history.back(-1);return false" styleClass="btn btn-default"></h:commandButton>

                                </h:form>

调用编辑页的方法:

代码语言:javascript
运行
复制
    public String updateUser(){

    user = userModel.getRowData();
    return "EditUser.xhtml";
}

不会引发任何异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-10 07:27:04

如果使用@ViewScoped bean,当您从list页面导航到编辑页面时,jsf将创建它的一个新实例。你有三种我能想到的选择:

  • 使用@SessionScoped
  • 通过ajax打开编辑页面,并作为弹出面板打开。
  • 使用@ViewScoped,将用户id添加到url作为视图参数(即。( EditUser.xhtml?id=123),并在页面加载时将用户数据从db加载到编辑页而不是列表页。在这个场景中,最好为列表和编辑页面设置不同的托管bean。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26285988

复制
相关文章

相似问题

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