0

我正在使用带有 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 在页面加载时构建,而是在呈现实际表单时构建?

在互联网上看了很长时间,但我似乎找不到任何对我有帮助的东西。

4

1 回答 1

0

您可以使组件延迟加载,以便在新的 HTTP 请求上检索内容。假设您使用诸如 primefaces 之类的东西,您可以使用 p:fragment。如果您使用 RichFaces,则可以使用 Rich:outputPanel。只要确保这两个都设置为重新渲染。

您还可以使用像 JSF panelGrid 这样的低级别的东西,并基于 AJAX 调用重新呈现它。

于 2013-10-27T13:50:27.477 回答