【问题标题】:How to obtain data from database when using h:link and h:button in JSF GET method在 JSF GET 方法中使用 h:link 和 h:button 时如何从数据库中获取数据
【发布时间】:2011-11-15 19:26:30
【问题描述】:

我有一个包含一个实体的简单应用程序。实体是 Car,所以我制作了 CRUD 方法和“获取所有汽车”方法。我正在使用 JSF 创建一个网站,其中有汽车列表,旁边有一个编辑/显示/删除链接。我想在显示/编辑链接上使用 GET 而不是使用 POST。到目前为止,我使用了带有 id 的 h:link 作为参数,并在显示页面中将它们设置为 viewParams。

整个应用程序都有效,但我有一个问题。目前,我正在执行 EJB 调用,该调用从后备 bean 中汽车 ID 的设置方法中的 ID 中找到合适的汽车。我还没有找到另一种方法,所以我想知道这是否正确?因为我没有与 h:commandButton 以相同方式调用的操作方法并返回它应导航到的页面的字符串。

【问题讨论】:

    标签: java jsf jakarta-ee ejb


    【解决方案1】:

    您可以使用<f:event type="preRenderView"> 在视图呈现之前触发视图操作。

    例如

    <f:metadata>
        <f:viewParam name="id" value="#{cars.id}" />
        <f:event type="preRenderView" listener="#{cars.init}" />
    </f:metadata>
    

    @ManagedBean
    @ViewScoped
    public class Cars {
    
        private Long id;
        private Car car;
    
        @EJB
        private CarService service;
    
        public void init() {
            car = service.find(id);
        }
    
        // ...
    }
    

    请注意,在即将推出的 JSF 2.2 中,&lt;f:event type="preRenderView"&gt; 可以被新的 &lt;f:viewAction&gt; 替换,它更具有自文档性:

    <f:metadata>
        <f:viewParam name="id" value="#{cars.id}" />
        <f:viewAction action="#{cars.init}" />
    </f:metadata>
    

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 2012-08-10
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2020-03-23
      相关资源
      最近更新 更多