带有Bootstrap模式的RequestScoped JSF CDI bean

时间:2013-10-26 17:21:19

标签: jsf modal-dialog twitter-bootstrap-3 cdi

我正在使用带有Bootstrap 3框架的JSF 2.0。一切似乎都运行正常,但是当我想从RequestScoped CDI bean在Bootstrap模式中填充表单时,我遇到了问题。在调试之后,在我看来,当模态处于加载状态的页面时,bean被实例化,而不是在打开模态时。所以,当我打开模态时,bean就不再存在了。以下是我的一些代码:

这是我打开模态的地方

<li><a href="#editModal" data-toggle="modal"><span class="glyphicon glyphicon-edit"></span> &nbsp;Rediger bruker</a></li>

这是模态内容,位于同一页面上。农民是豆的名字

<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Endre bruker</h4>
            </div>
            <div class="modal-body">
                <div class="well">
                    <ul class="nav nav-tabs">
                        <li class="active"><a href="#profile" class="" data-toggle="tab">Profil</a></li>
                        <li><a href="#password" class="" data-toggle="tab">Passord</a></li>
                        <li><a href="#reference" class="" data-toggle="tab">Referanseperson</a></li>
                    </ul>

                    <div class="tab-content">
                        <div class="tab-pane active" id="profile">
                            <h:form class="form-horizontal form-group">
                                <fieldset>
                                    <div class="input-group">
                                        <h:outputText id="email" class="form-control" value="#{farmer.theFarmer.email}"/>

有没有办法阻止在加载页面时构造bean,而是在呈现实际表单时?

长时间在互联网上看,但我似乎无法找到任何可以帮助我的东西。

1 个答案:

答案 0 :(得分:0)

您可以延迟加载组件,以便在新的HTTP请求中检索内容。假设你使用像primefaces这样的东西,你可以使用p:fragment。如果使用RichFaces,则可以使用rich:outputPanel。只需确保将这两个设置为重新渲染。

你也可以像JSF panelGrid那样使用低级别的东西,并根据AJAX调用重新渲染。